我知道 C 中的数组只是指向顺序存储数据的指针。但是什么不同意味着符号[]和*的不同。我的意思是在所有可能的使用环境中。例如:
char c[] = "test";
如果您在函数体中提供此指令,它将在堆栈上分配字符串,而
char* c = "test";
将指向一个数据(只读)段。
您能否在所有使用上下文中列出这两种符号之间的所有差异,以形成清晰的总体视图。
原文由 Alexander Reshytko 发布,翻译遵循 CC BY-SA 4.0 许可协议
我知道 C 中的数组只是指向顺序存储数据的指针。但是什么不同意味着符号[]和*的不同。我的意思是在所有可能的使用环境中。例如:
char c[] = "test";
如果您在函数体中提供此指令,它将在堆栈上分配字符串,而
char* c = "test";
将指向一个数据(只读)段。
您能否在所有使用上下文中列出这两种符号之间的所有差异,以形成清晰的总体视图。
原文由 Alexander Reshytko 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
根据C99标准:
根据标准声明…
……是相同的。数组的内容是可修改的。另一方面,声明…
…将类型定义为 指向常量
char
的指针的 p 并将其初始化为指向类型为 常量数组char
的对象( 在 C++ 中),长度为 4,其元素初始化为字符串文字。如果尝试使用p
修改数组的内容,则行为未定义。根据 6.3.2.1 数组下标 取消引用和数组下标是相同的:
数组与指针的区别在于:
有关该主题的更多有用信息, 请访问 http://www.cplusplus.com/forum/articles/9/