一个非常基本的C问题。为什么以下两个命令会导致创建具有不同大小的字符串?C基础:比较“* char”和“char [x]”创建字符串
如下所示,方法1创建一个大小为8字节的字符串,方法2创建一个大小为5字节的字符串。
很困惑,为什么方法1是创建的大小为8个字节的字符串...
(我已经看到了这些帖子:Difference of sizeof between char* x and char x[]和What is the difference between char s[] and char *s?除非我有一个阅读,理解失效,它并没有真正解决方法的原因1创建的大小为8个字节的字符串。据响应,它似乎是方法1,应创造的4个字节大小的指针)
方法1:
char *string = "ABCD";
方法2:
char string2[5] = "ABCD";
例如,当我运行下面的程序时,我得到如下所示的输出。
#include <stdio.h>
int main(int argc, char *argv[])
{
char *string = "ABCD";
printf("Based on \"char *string = \"ABCD\":\n");
printf("Size of string: %ld\n",sizeof(string));
printf("Size of each element of string: %ld\n",sizeof(string[0]));
printf("String: %s\n\n", string);
char string2[5] = "ABCD\0";
printf("Based on \"char string2[5] = \"ABCD\":\n");
printf("Size of string: %ld\n",sizeof(string2));
printf("Size of each element of string: %ld\n",sizeof(string2[0]));
printf("String: %s\n\n", string2);
return 0;
}
输出上述程序的:
[C中char s \ [\]和char \ * s有什么区别?](http://stackoverflow.com/questions/1704407/what-is-the-difference-between-char-s-and-char-s-in-c) – 2014-10-08 22:54:42
另一个可能的愚蠢:http://stackoverflow.com/questions/15538210/sizeof-a-pointer – 2014-10-08 23:32:20
另外,对于'char string3 [] =“ABCDE”;'(没有声明大小)'sizeof(string3)== 6'(5个字母+ nul) – 2014-10-08 23:53:22