S1
、S2
和S3
有什么区别呢?
char S1[6];
S1[0] = 'A';
S1[1] = 'r';
S1[2] = 'r';
S1[3] = 'a';
S1[4] = 'y';
char S2[6] = {'A','r','r','a','y'};
string S3 = "Array";
当我使用
if (strcmp(a,b) == 0)
运行程序时,其中a, b = S1, S2, S3
。它显示S2
和S3
相同,而S1
和S2
不同。
为什么会这样?为什么不是所有三个都相等?当我将
'\0'
加回到S1b
、S1c
中,所有3个字符串都相同。这是可以理解的。但为什么在我的第一个尝试中,
S2
和S3
相同呢?我也没有包含'\0'
。我怀疑S1
和S2
应该是相同的,但不是S2
和S3
。有谁能告诉我我的想法错在哪里吗?
感谢您的答案。我已经尝试并更改了以下设置:
char S1[5];
S1[0] = 'A';
S1[1] = 'r';
S1[2] = 'r';
S1[3] = 'a';
S1[4] = 'y';
char S2[5] = {'A','r','r','a','y'};
string S3 = "Array";
现在显然 S2
和 S3
不同,因为它们之间有一个'\0'
的区别。
然而,如果我使用strcmp来比较这两个字符串,为什么S1
和S2
这次还是不同呢?
S1[5]
未初始化,可能包含'\0'
。S2[5] == '\0'
,因为当对象被初始化(不同于赋值)时,任何未指定的元素都被设置为零。 - Keith Thompsonstring
定义为 typedef? - Keith Thompson