2-8比较大小的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include<iostream> #include<string> #include<assert.h> using namespace std; //函数之求字符串长度 int str_len( const char *str){ assert (str!=NULL); int len=0; while (*str!= '\0' ){ len++; str++; } return len; } //函数之求字符串比较 int str_cmp( const char *s1, const char *s2){ assert ((s1!=NULL)&&(s2!=NULL)); while ((*s1)&&(*s1==*s2)){ s1++; s2++; } return (s1-s2); } int main() { char *str1= "Hello!" ; char *str2= "World!" ; cout<<str_len(str1)<<endl; cout<<str_cmp(str1,str2)<<endl; cout<<(str1-str2)<<endl; //直接打印字符串的差 return 0; } |
问题1:为什么老师的代码打印出来是-15,而我打印出来的是8;
问题2:我直接打印两个字符串相减结果与调用函数的出来的结果一样,那么这个函数还有什么意义呢?
0
收起
正在回答
1回答
你好, 字符串比较应该返回的是对应值的相减,return (*s1-*s2);则结果为15。直接减是字符串地址的相减,每个人系统地址配置不同则结果也不相同,如果解决您的问题请采纳,祝学习愉快!
C++零基础入门 热门编程语言 二级考试必备
- 参与学习 529 人
- 提交作业 110 份
- 解答问题 593 个
无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧