堆、栈、全局区静态区、文字常量区、程序代码区
来源:互联网 发布:邪器 知乐封面原画 编辑:程序博客网 时间:2024/06/10 08:53
一、内存结构图:
二、代码示范区:
三:案例分析:
char ch[]="abc";
表示ch 是一个足以存放字符串初值和空字符'/0'的一维数组,可以更改数组中的字符,但是char本身是不可改变的常量。
char *pch = "abc";
那么pch 是一个指针,其初值指向一个字符串常量,之后它可以指向其他位置,但如果试图修改字符串的内容,结果将不确定。
______ ______ ______
ch: |abc\0 | pch: | ◎-----> |abc\0 |
______ ______ ______
总结如下:
1. char[] p表示p是一个数组指针,相当于const pointer,不允许对该指针进行修改。但该指针所指向的数组内容,是分配在栈上面的,是可以修改的。
2.
char * pp表示pp是一个可变指针,允许对其进行修改,即可以指向其他地方,如pp = p也是可以的。对于*pp =
"abc";这样的情况,由于编译器优化,一般都会将abc存放在常量区域内,然后pp指针是局部变量,存放在栈中,因此,在函数返回中,允许返回该地址
(实际上指向一个常量地址,字符串常量区);而,char[] p是局部变量,当函数结束,存在栈中的数组内容均被销毁,因此返回p地址是不允许的。
0 0
- 栈,堆,全局区,文字常量区,程序代码区。
- 栈,堆,全局区,文字常量区,程序代码区
- 栈、堆、全局存储区、文字常量区、程序代码区
- 栈堆全局文字常量区程序代码区
- 栈stack 堆heap 全局区(静态区)static 文字常量区 程序代码区
- 堆、栈、全局区静态区、文字常量区、程序代码区
- 栈区、堆区、全局区、文字常量区、程序代码区
- C语言内存分区_栈区、堆区、全局&静态区、文字常量区、程序代码区
- 内存区域划分(栈区,堆区,全局静态区,文字常量区,程序代码区)
- 栈区,堆区,全局区,文字常量去,程序代码区
- 栈区,堆区,全局区,文字常量去,程序代码区
- 堆和栈的区别,顺便介绍一下:全局区(静态区)、文字常量区、程序代码区
- 从内存的角度观察 堆、栈、全局区(静态区)(static)、文字常量区、程序代码区
- 堆和栈的区别,顺便介绍一下:全局区(静态区)、文字常量区、程序代码区
- 堆和栈的区别,顺便介绍一下:全局区(静态区)、文字常量区、程序代码区
- 堆和栈的区别,顺便介绍一下:全局区(静态区)、文字常量区、程序代码区
- 详解栈区、堆区、全局区、文字常量区、程序代码区
- 详解栈区、堆区、全局区、文字常量区、程序代码区
- java--关于动态代理
- 快速使用开源库实现下拉刷新----PullRefreshLayout
- Visual Studio 2012,运行时窗口闪退解决方法
- WKWebView API精讲(OC)
- 数据结构实验之串一:KMP简单应用
- 堆、栈、全局区静态区、文字常量区、程序代码区
- VC++60 第二章 按钮、编辑框和复选框
- 好用的程序构建工具scons
- (一)python 基础教程——python简介
- MySQL 之 CASE WHEN 的使用方法
- Win7上eclipse无插件提交Hadoop2.2分布式作业
- VC++60 第三章 使用Activex控件
- cmd 文件批量添加前缀
- Spring Bean--Bean的配置项、作用域、生命周期