C语言 字符串常量赋值给指针后不可修改原因分析 /转载请说明出处与作者/ /作者:多巴胺dopamine/ 一、问题描述 字符串赋值给一个指针后,再次赋值的时候发现会报错。而将指针当作指针数组赋值时,却可以修改。 二、分析 查看指针所指向的地址是否发生改变
总结: (1)发现将一个字符串常量赋值给指针后,指针所指向的地址改变了。a和e是两个指针变量,但是在使用相同的字符串常量赋值后,所指向的内存地址是一个。 (2)数组c可以修改,且地址空间离其它变量特别远。 说明:数组c开辟的空间在堆栈里。 (3) a和d所指向的字符串仅仅差了一个字母,但地址紧邻却不同。 说明:这是两个字符串常量,同时也说明说明:程序在初始化的时候仅会将该程序将使用的字符串常量放到一个区域(仅读不可修改)。 (4)b的地址没有改变。 说明:b虽是指针变量,但赋值时采用数组的方式,因此它的地址空间也在堆栈里,可以修改。 三、结论 在使用 malloc()为指针开辟空间时,开辟的空间都是指向堆栈里的空间。但如果用常量给其赋值,指针就会指向不可修改的常量区,但之前开辟的空间仍然存在。 博客链接:多巴胺dopamine – 博客园 (cnblogs.com)
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/79258.html