C语言进阶——Day 1

C语言提高笔记

Day 1

  1. 小数据赋给大变量,首位是1则在前面自动补充1,首位是0则在前方自动补充0。
  2. 大数据赋给小变量,低位字节对齐,truncate截断,有可能会造成数据丢失。
  3. 程序和进程的差别:程序是源文件经过编译后的可执行文件,进程是被操作系统从程序开始到结束的整个时间。
  4. 程序在拉入内存中之前就已经具备text段和initialized data段,拉入内存后才具备进程空间中的其他段,一般来说0-3G属于用户空间,3G-4G属于系统空间,这一段空间不讨论。32位机每一个进程都是虚拟内存,都可以做到4G空间。
  5. 注意硬盘空间,虚拟内存和真实内存之间的关系。
  6. 我们对变量取地址,取的是虚拟的地址而非真实的地址。

 

    如int a中变量a就是未初始化变量,处于未初始化数据段

    int b=200,变量b是已经初始化变量,处于初始化数据段,可读可写,处于rw段,200一般

    char *p=”china”,其中p位于rw段,”china”处于ro段

    int a=20,其中20常直接放在代码段

    由以上可知,常量有可能放在text段,也有可能放在ro段,

  8. 程序中的变量常量在进程空间中的位置

 

 

如此存放原因,

(1)回顾四种修饰符:

auto:修饰局部变量,默认为auto,随用随开,用完即消

register:修饰局部变量,将内存变量升级到CPU寄存器中存储

extern:修饰全局变量

static:修饰局部变量,改变局部变量生命周期,使其生命周期同进程

(2)栈和堆的存储

栈中可以存放任意类型的变量,但必须是aoto类型修饰的

注意,局部变量是存放在栈上,全局变量存放在堆上

 

posted @ 2018-09-26 21:31  Cucucu  阅读(112)  评论(0编辑  收藏  举报