可能有重复问题:
char *str =“STRING”和char str [] =“STRING”的区别?
C语言:指针和数组之间的区别
嗨,
有人可以告诉我下面两个语句之间的区别吗?
char *p = "This is a test";
char a[] = "This is a test";
可能有重复问题:
char *str =“STRING”和char str [] =“STRING”的区别?
C语言:指针和数组之间的区别
嗨,
有人可以告诉我下面两个语句之间的区别吗?
char *p = "This is a test";
char a[] = "This is a test";
当你声明char p[]时,你声明了一个字符数组(可读可写),并且该数组被初始化为一些字符序列,即"This is test"复制到该数组的元素中。
当你声明char* p时,你声明了一个指针,直接指向某个常量字面值-而不是副本。这些只能被读取。
char *p = "literal"
是不合法的。 - Simon Richtera
是一个数组,这意味着你可以在a
上使用sizeof()
运算符,而sizeof(a)/sizeof(a[0])
等于数组的长度。
p
是指向常量内存区域的指针。
1 - 指向程序中只读区域的指针,其中包含“This is test\0”字符串。
2 - 占据13个字节的内存,其内容已初始化为上述提到的内容。