繁体   English   中英

C字符数组初始化

[英]C character array initialization

在以下代码中:

char *p = "Linux";

堆栈中的“Linux”内存或程序的只读段是?

请参阅第12条有趣的C面试问题和答案中的问题9。

谢谢。

该实现可以随意存储在任何需要的地方。 它是一个常量,因此它可以在只读存储器中,但不是必须的。

我的C编程讲师总是把它放在堆栈上,因此有疑问。

他可能意味着指针。 考虑:

char *p = "Linux";
p = "Rules";

在第二行中,有些东西从指向“Linux”变为指向“规则”。 刚改变的东西就在堆栈上。

正如链接所说,它不存储在动态分配的内存中,而是存储在代码本身所在的内存中。 即只读部分。 因此,尝试更改它的原因导致了段错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM