作业帮 > 综合 > 作业

设char *s1,*s2; 分别指向两个字符串.判断字符串s1和s2是否相等的表达式为( d ).(a) s1=s2

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/19 06:30:39
设char *s1,*s2; 分别指向两个字符串.判断字符串s1和s2是否相等的表达式为( d ).(a) s1=s2 (b) s1==s2 (
设char *s1,*s2; 分别指向两个字符串.判断字符串s1和s2是否相等的表达式为( d ).
(a) s1=s2\x05\x05\x05\x05\x05\x05(b) s1==s2
(c) strcpy(s1,s2)==0\x05\x05\x05\x05(d) strcmp(s1,s2)==0
这题选d?
我用VC跑了b也是对的啊
s1==s2那只是说两个字符串的首地址相同.
再问: 如果是这样的话s1,s2首地址也不相同啊
再答: 没错啊
再问: 对嘛那s1==s2的值应该是false吧,即使值相同但地址也不相同啊 可是我用VC跑一下,发现返回值是ture
再答: 这是系统优化问题,,我刚才弄明白了。lz不妨试试,写个main函数,其中让char *a="sss"; 再写个其他的外部text.cpp, 其中 char *b="ssss“用extern来在main 函数里引用外部变量 即extern char *b,然后再在main 函数里写个a==b 可以发现此时为false .而如果两个变量在同一个文件,比如main中,那么为true。也就说明,在一个文件中如果出现两个变量值值相同,那么这两个变量所占内存是一样的。
再问: 哦也是说着是系统自己优化掉了,节省内存空间?
再答: 嗯,不信你可以按我的方法自己试试,只有自己试试,才会记得清楚