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

设char *s1,*s2; 分别指向两个字符串。判断字符串s1和s2是否相等的表达式为( d )。
(a) s1=s2 (b) s1==s2
(c) strcpy(s1,s2)==0 (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。也就说明,在一个文件中如果出现两个变量值值相同,那么这两个变量所占内存是一样的。

追问

哦也是说着是系统自己优化掉了,节省内存空间?

追答

嗯,不信你可以按我的方法自己试试,只有自己试试,才会记得清楚

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-25
正确:(d) strcmp(s1,s2)==0

B只是比较了第一个字符。
第2个回答  2012-06-25
正确:(d) strcmp(s1,s2)==0

输入两个字符串,输出两个字符串的长度,判断两个字符串是否相同,并
1、求字符串长度:int strlen(char *s);头文件:string.h 说明:返回s的长度,不包括结束符NULL。2、判断字符串大小:int strcmp(const char *s1,const char *s2);头文件:string.h 说明:当s1<s2时,返回为负数;当s1==s2时,返回值= 0;当s1>s2时,返回正数。3、字符串拼接:char *str...

串比较: int strcmp(char *s1,char *s2);\/\/比较s1和s2的大小:
首先比较两个字符串的第一个字符:b的ASCII码为98 而B的ASCII码为66,没记错的话是这样。所以结果就出来了。 后面的就不用比较了。 你记住一点,小写字符都大于大写字符。

C语言中怎么判断两个字符串是相同的.
原型:extern int strcmp(char *s1,char * s2);用法:#include <string.h> 功能:比较字符串s1和s2。说明:当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 举例:\/\/ strcmp.c include <syslib.h> include <string.h> main(){ char *s1="Hello, Programmers!";char ...

1. 编写一个strcmp函数实现两个字符串的比较:
int stringcmp(char *s1,char *s2){ while(*s1||*s2) \/\/如果S1和S2比较完毕 (‘\\\\0’)跳出循环;{ if(*s1-*s2) \/\/判断S1和S2对应的字符是不是不同;return *s1-*s2; \/\/如果不同,返回S1和S2的ASCII之差;else \/\/ 如果相同,让指针指向S1和S2的下一个字符比较 { s2++;s1++;...

比较两个字符型指针char *s1,*s2,s1,s2由键盘输入,是strcmp(s1,s2),还...
函数原型:extern int strcmp(const char *s1,const char *s2);

...对输入的两个字符串s1和s2进行比 较。若sl>s2,输出一个正数;若sl...
include"stdio.h"int mystrcmp(char *s1,char *s2){for(;*s1==*s2;s1++,s2++);return *s1-*s2;} int main(){char s1[200],s2[200];gets(s1);gets(s2);printf("%d\\n",mystrcmp(s1,s2));return 0;}

输入两个字符串,比较这两个字符串是否相等,并输出比较结果
\/*输入两个字符串,比较这两个字符串是否相等,并输出比较结果 用指针*\/ include"stdio.h"main(){ char ch,c[100],a[100];char *p,*q;int i=0,j=0,m,n,flag=1;printf("输入第一个字串:\\n");ch=getchar();while(ch!='\\n'){ c[i++]=ch;ch=getchar();} printf("输入第...

以下有库函数strcpy(char *s1,const char *s2)功能不相等的函数是...
strcpy的功能是把字符串s2复制到字符串s1,字符串s2的值是不需要修改的。使用const可以明确这一点,如果试图在函数中修改字符串s2,例如*s2='a'(正如重楼の爱幂的解释,const char *s2表示的是s2所指向的是一个常量,即*s2不能被修改;但s2本身是可以被修改的,所以s2++这样的语句是正确的),...

...f(char *sl,char *s2) {while(*s1++==*s2++); return(*--s1-*...
int f(char *sl,char *s2) { while(*s1++==*s2++);\/\/遍历s1和s2直到遇到不相等的字符 \/\/对f("abcd","abgg")来说也就是s1的c和s2的g \/\/但是遇到这两个后还有个++操作 \/\/所以第一个while结束后, s1指向d,s2指向第2个g \/\/最后return前,s1和s2都有前置--,相当于往前退一...

...函数原型可为: int strcmp(char *s1, char *s2)
一个公认的实现方法如下: 注意两个形参应该是const char int my_strcmp(const char *s1, const char *s2){ unsignedchar uc1, uc2;while(*s1 !='\\0' && *s1 ==*s2){ s1++;s2++;} uc1 =(*(unsignedchar*) s1);uc2 =(*(unsignedchar*) s2);return((uc1 < uc2)?-1:(uc...

相似回答