方便记忆的思维导图:
C存储记忆导图.jpgHead First C书中43页存储器图:
截图 2016-03-01 10时07分39秒.jpg
从图可以理解为,存储器从上到下越来越紧实
,所以可以理解打了常量段
和代码段
是不可更改的部分了,也就是只读区域。
看过很多有关C存储图,分的层次和命名有写区别,但是栈
、堆
、代码段
是相同的。
如图:
区别1:
在Head First C图中栈
的上方有命令行参数和环境变量
(command-line arguments and environment variables
).
区别2:
在Head First C图中全局量段
(Globals
)被称作未初始化的数据段
(uninitialized data
简称bss)。
区别3:
在Head First C图中常量段
被称作数据段
(initialized data
)加已初始化数据段才对。
指针
是进程存储器
中真实编号的地址
.
进程存储器是计算机为每一个进程分配的一个简版存储器,看起来就像一长串字节。
1、用&
运算符找到变量保存在存储器中的地址。
int x = 4;
printf("x lives at %p\n",&x);
2、指针变量是一个用用来保存存储器地址的变量。
int * address_of_x = &x;
3、有了存储器的地址,就可以读取保存在那里的数据了。
int value_stored = *adddress_of_x;
4、有了指针变量修改这个变量所指向地址的数据,可以再次使用*
运算符。
*address_of_x = 99;
网友评论