指针和数组的区别

11

3
这是需要翻译的内容:“duplicate of https://dev59.com/1XM_5IYBdhLWcg3wiDuA ; the accepted answer to https://dev59.com/kUrSa4cB1Zd3GeqPWnUT is also relevant。” 这句话的意思是:第一个链接是关于C语言指针和数组区别的问题,第二个链接是关于通过实例来比较数组和指针相似性及差异性的问题。第二个链接中被接受的答案也与此相关。 - Christoph
3个回答

8

当你声明char p[]时,你声明了一个字符数组(可读可写),并且该数组被初始化为一些字符序列,即"This is test"复制到该数组的元素中。

当你声明char* p时,你声明了一个指针,直接指向某个常量字面值-而不是副本。这些只能被读取。


char *p = "literal" 是不合法的。 - Simon Richter
1
@SimonRichter 不在C89中。 - fredoverflow

5

a是一个数组,这意味着你可以在a上使用sizeof()运算符,而sizeof(a)/sizeof(a[0])等于数组的长度。

p是指向常量内存区域的指针。


3

1 - 指向程序中只读区域的指针,其中包含“This is test\0”字符串。

2 - 占据13个字节的内存,其内容已初始化为上述提到的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接