关于字符串的一个简单问题(c语言)三种字符数组的区别,是否等价()char c[]{I am happy}char c[]{I,
关于字符串的一个简单问题(c语言)
三种字符数组的区别,是否等价()
char c[]={"I am happy"};
char c[]={'I',' ','a','m',' ','h','a','p','p','y'};
char c[]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
[解决办法]
前两个是等价的。最后一个不是。
[解决办法]
楼上正解,顶楼上,第三个多了一个\0..
[解决办法]
[解决办法]1,3一样, 2不一样.
[解决办法]在给一个字符数组赋值字符串时,默认在字符串的结尾处添加'\0',作为字符串的结尾。
故1,3一样, 2不一样。可以用如下代码测试一下:
#include <stdio.h>
int main(int argc, char *argv[])
{
char a[]={"I am happy"};
char b[]={'I',' ','a','m',' ','h','a','p','p','y'};
char c[]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
printf("length a=%d\n",sizeof(a)/sizeof(char));
printf("length b=%d\n",sizeof(b)/sizeof(char));
printf("length c=%d\n",sizeof(c)/sizeof(char));
return 0;
}
/*
result:
length a=11
length b=10
length c=11
*/
[解决办法]char c[]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
多了一个 '\0'
可以使用 <string.h> 中的函数
[解决办法]char c[]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
多了一个 '\0'
可以使用 <string.h> 中的函数
[解决办法][解决办法]通过实际运行,modicum_ck是对的。第一句应该是将“I am happy”的完整形式传递给数组