C语言字符串比较,为什么这个程序运行之后输出结果会是1?str2[1]无论改成什么,n2都等于1,问题在哪?

2025-03-26 10:42:56
推荐回答(3个)
回答(1):

*str2+2等于&str2[0][2],h>a,所以n1等于1。
*str2+1等于&str2[0][1],h>e,所以n2也等于1。
这有什么奇怪的吗?

回答(2):

你比较的是str1和str2[0]第二个字符后的字串,当然怎么改str2[1]都不会影响结果。
hello和easdq相比肯定是1了

回答(3):

#include
#include
#include
int main() {
char str1[]="hello" ;
char str2[2][6]= {"heeco","hello"};
int n1, n2;
//n1 = strncmp(str1, *str2+2, 4);
n2 = strncmp(str1, *(str2+1), 5);
//printf("%d\n%d", n1, n2);
printf("%d", n2);
return 0;
}