2-8比较大小的函数

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

正在回答

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

1回答

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

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

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

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

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

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

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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