指针和数组之间的区别[重复]
Posted
技术标签:
【中文标题】指针和数组之间的区别[重复]【英文标题】:Difference between pointer and array [duplicate] 【发布时间】: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";
【问题讨论】:
***.com/questions/1335786/… 的副本; ***.com/questions/1782369/… 接受的答案也很重要 【参考方案1】:当您声明 char p[] 时,您正在声明一个字符数组(可以读取和写入),并且该数组被初始化为一些字符序列,即“这是测试”被复制到元素在这个数组中。
当你声明 char* p 时,你声明的是一个直接指向某个常量字面量的指针——而不是一个副本。这些只能读取。
【讨论】:
char *p = "literal"
格式不正确。
@SimonRichter 不在 C89 中【参考方案2】:
a
是一个数组,这意味着您可以在a
上使用sizeof()
运算符,并且sizeof(a)/sizeof(a[0])
等于数组长度。
p
是一个指向常量内存区域的指针。
【讨论】:
【参考方案3】:1 - 指向包含“This is test\0”字符串的程序只读部分的指针。
2 - 使用上述内容初始化的内存(13 字节)。
【讨论】:
以上是关于指针和数组之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章