C语言指针复习
一,基本概念:指针是C语言中的一种数据类型,该类型定义的类型变量就是指针变量。在该变量存储的是一个地址。
(指针变量存储的是一个地址,所以说指针就是地址,地址就是指针)
二,分类:一级指针和多级指针
二级指针存储的就是一级指针的地址
*ppa访问的就是pa , **ppa访问的就是&pa (三级指针也是同样的)
三,指针的使用
*和-> (->只能用于结构体和类中)
四,指针的大小
在32位系统下指针的大小为4个字节,在64位系统下是8个字节。
五,const修饰指针
一级指针:int a = 10;
const int *p1;
int const *p2;
//等价修饰的是指针变量,其实p1和p2就是普通指针,并没有被const修饰,即可以修改p1和p2的值。
//但p1和p2指向的是const int*,即指向的是一个被const修饰的int,也就是*p1和*p2是被const修饰,不要尝试修改*p1和*p2的值;
int *const p3=&a;
//p3是一个指向int型的指针,被const修饰,声明时必须同时初始化, 之后不要尝试修改p3的值。
const int *const p4 =&a;
//p4及*p4均被const修饰;声明时必须同时初始化。之后不要尝试修改p4与*p4;
return 0;
六,数组指针与指针数组
数组指针:数值指针是一个指针,说的是这个指针指向一个数组。int (*p) [5]
指针数组:指针数值是一个数组,说这个数组的所有元素都是指针类型。int *p[5]
七,指针与引用的区别
(1)概念区别指针是一:个变量,是变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体。
引用:原来的变量实质上是一个东西,只是原变量的一个别名
(2)const可以修饰指针而不能修饰引用
(3)指针可以有多级指针,而引用不可以
(4)指针可以为空,引用不可以为空,必须在定义时初始化
(5)指针是一个变量,在初始化化后可以更改。引用在初始化后就不能更改
(6)指针的大小根据系统而决定(32位下位4字节,64位下为8字节),而引用的大小根据所指变量而决定
(7)++运算符的意义不一样