2-8比较大小的函数

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:我直接打印两个字符串相减结果与调用函数的出来的结果一样,那么这个函数还有什么意义呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好, 字符串比较应该返回的是对应值的相减,return (*s1-*s2);则结果为15。直接减是字符串地址的相减,每个人系统地址配置不同则结果也不相同,如果解决您的问题请采纳,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       593    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码