2-8比较大小的函数
#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 份
- 解答问题 594 个
无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星