指针和数组之间的区别[重复]

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 字节)。

【讨论】:

以上是关于指针和数组之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C:char指针和数组之间的区别[重复]

C++指针和&Pointer之间的区别[重复]

C中char []和char *之间的区别[重复]

在c ++函数中返回地址和返回指针之间的区别[重复]

数组是指针? [重复]

创建新数组和清除长度之间的区别[重复]