栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux上使用C的Char数组和指针进行分段错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux上使用C的Char数组和指针进行分段错误

one
直接指向位于只读页面中的字符串。另一方面,
two
是在堆栈上分配的数组,并使用一些常量数据进行初始化。在运行时,可执行文件的只读部分中的字符串将被复制到堆栈中。您要修改的是该字符串在堆栈上的副本,而不是只读存储器页面。

从语言的角度来看,在更高层次上

"abcd"
是type
constchar*
而不是的表达
char*
。因此,修改此类表达式所指向的值会导致未定义的行为。该语句
char* one ="something";
仅将指向字符串的指针存储在变量中(不安全,因为它正在抛弃
const
修饰符)。的
char two[] ="something";
是完全不同的。它实际上是在声明一个数组并对其进行初始化,就像
int a[] ={1,2,3};
。引号中的字符串是初始化表达式。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号