六七章问题

一、内存字节对齐

???

二、结构体·的定义

struct

三、野指针的成因

1.指针变量没有被初始化

2.指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针

四、数据存放

1.未初始化的全局变量存放 .bss段.bss段类型的全局变量只占运行时的内存空间,而不占用文件空间。

2.数据段(1)初始化过的全局变量  .data段 用来存放那些初始化为非零的全局变量。data类型的全局变量即占用文件空间,

又占用运行时内存空间。(2)常量数据 .rodata段

3.代码段 .test段   存放代码 函数 和部分整数常量

4.栈   stack   栈用于存放临时变量和函数参数 形参 局部变量

5.堆 heap 存放   malloc   realloc  free    堆的生命周期完全由使用者控制

五、指针与数组对比

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着一块内存,其地址与容量在生命·周期内保持不变,只有数组的内容可以改变。

指针可以随时指向任意类型的内存块,它的特征时 可变 ,所以指针来操作动态内存。

六、内容复制

若是想把数组a的内容复制给数组b,不能用语句“b=a”,否则将产生编译错误,应该用标准库函数strcpy进行复制。同理用来比较b和a内容是否相同,不能用“if(b=a)”来判断,应该用标准库函数strcmp进行比较。

语句"p=a"并不能把a的内容复制给指针p,而是把a的地址赋给了p。要想复制a的内容,可以先用库函数malloc为p申请一块容量为strlen(a)+1个字符的内存,再用strcpy进行字符串复制。同理,if(p=a)比较的不是内容而是地址,应该用strcmo来比较

七、带参宏定义与自定义函数的区别

1.在带参宏定义中,形参不分配内存单元,不存在值传递的问题

2.在宏定义中,字符串的形参是标识符,而宏调用中的实参可以是表达式。

八、条件编译

??

九、结构体和数组的比较

1.都是由多个元素组成

2.各个元素在内存中的存储空间是连续的;

3.数组中的各个元素的数据类型相同,而结构体中的各个元素的数据类型可以不相同。

十、结构体的使用

struct 结构体

{


}

typedef struct student stu


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值