【发布时间】:2011-07-01 23:54:58
【问题描述】:
可能的重复:
Difference between char *str=“STRING” and char str[] = “STRING” ?
C: differences between pointer and array
嗨,
谁能告诉我以下陈述之间的区别?
char *p = "This is a test";
char a[] = "This is a test";
【问题讨论】:
可能的重复:
Difference between char *str=“STRING” and char str[] = “STRING” ?
C: differences between pointer and array
嗨,
谁能告诉我以下陈述之间的区别?
char *p = "This is a test";
char a[] = "This is a test";
【问题讨论】:
当您声明 char p[] 时,您正在声明一个字符数组(可以读取和写入),并且该数组被初始化为一些字符序列,即“这是测试”被复制到元素在这个数组中。
当你声明 char* p 时,你声明的是一个直接指向某个常量字面量的指针——而不是一个副本。这些只能读取。
【讨论】:
char *p = "literal" 格式不正确。
a 是一个数组,这意味着您可以在a 上使用sizeof() 运算符,并且sizeof(a)/sizeof(a[0]) 等于数组长度。
p 是一个指向常量内存区域的指针。
【讨论】:
1 - 指向包含“This is test\0”字符串的程序只读部分的指针。
2 - 使用上述内容初始化的内存(13 字节)。
【讨论】: