小结清单:
指针与引用区别与联系
指针与数组的区别与联系
指针与引用区别与联系
联系:
底层实现方式相同,都是按照指针的方式实现。
区别:
(1)引用必须初始化,指针可以不用初始化;
(2)引用一旦定义就不能改变,指针可以改变指向;
(3)sizeof的含义不同:sizeof指针的大小就是指针类型所占的字节数,引用是引用这个变量类型占的字节数;
(4)自增、自减含义不同:指针自增、自减表示位置的改变,引用的自增、自减表示数值的改变;
(5)存在多级指针,不存在多级引用;
(6)没有空引用,但是有空指针;
(7)引用比指针使用起来相对安全;
指针与数组的区别与联系
联系:
(1)指针与数组的关系:当指针变量被初始化成数组名时,该指针变量指向了数组;
(2)指向数组元素的指针:
int a[10];
int *pa;
pa=a;
pa=&a[0];
pa=a;
(3)指针与一维数组:任何由下标可以完成的操作都可以通过指针来实现(指针加偏移量);
(4)指针与多维数组:指向数组元素的指针变量,指向由n个整数组成的一维数组的指针变量;
(5)指针与字符数组:C语言中,字符串操作都是用指针来完成的;
区别:
(1)数组作为函数参数时,会退化为指针,实际上相当于传递的是指针;
(2)数组名可作为指针常量;
(3)数组是开辟一块连续的内存空间,数组本身的标识符代表数组本身,可以用sizeof求大小;
(4)指针只是分配了一个指针大小的内存,并把它的值指向某个有效的内存空间,因此不能在传递指针参数的被调用函数中用sizeof计算数组大小;
结构体内存对齐
引入结构体内存对齐的原因:
(1)不同平台并不是可以访问任何一个空间;
(2)提升访问速度(读写速度);
结构体内存对齐原则:
(1)结构体的第一个成员在结构体变量偏移量为0的地址处;
(2)其他成员变量要对应到对齐数整数倍的地址处;
(3)对齐数为当前机器的最大对齐数与结构体变量最大对齐数的较小值;
(4)结构体的总大小为最大对齐数的整数倍;
(5)如果嵌套了结构体,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是最大对齐数的整数倍;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)