c语言里的经典--指针
一.所谓的指针,就是地址
取地址运算符 &
语法: &变量名
值:指针
二. 指针类型的变量,就是存储地址的变量
int num; int变量,就是存储int类型数据的变量
指针变量,指针类型的变量,存储指针数据的变量
变量指针,变量的指针,就是变量的地址,即 &num
指针是一个地址,但是指针类型的变量是要区分类型的(以后在说*****)
如果要定义一个指向int类型的变量的指针
存储int类型变量的地址的变量
int *变量名;
此时变量"变量名"可以存储地址,但是要求地址是int类型变量的地址(默认是这样)
注意:指针类型的变量是存储地址的,那么如何给指针类型的变量赋初值
1, 定义的同时进行初始化
int num = 10;
int *iNump = # // 初始化完成以后,指针类型的变量就指向num数据
2, 先定义,再初始化
int num = 10;
int *iNump; // 先定义
iNump = # // 后初始化, 注意指针类型的变量前没有星号*
3, 先定义,使用的时候再初始化(难点,易错点)
如果将来工作,第二个写法是有错的
指针在使用的时候最大的特点是可以"随意的"访问内存
不给指针变量初始化容易出现错误,对于没有初始化的指针,常常称其为"野指针"
定义好指针以后用什么进行初始化?
int *iNump = 12345; // 不允许使用任意的数字
规定使用数字0进行初始化
int *iNump = 0;
在 stdio.h 中定义了一个宏名 NULL 表示的就是空指针
一般在初始化的时候建议使用它
int *iNump = NULL;
三.指针的访问
1, 直接访问,间接访问
直接访问就是使用变量名进行访问里面的数据
int num = 10;
printf("%d\n", num);
间接访问就是使用地址,来获取地址所指向的内存中的数据
取值运算符 *
语法: *地址(*指针变量)
int num = 10;
int *p = #
// 是p指向num,不是*p指向num
printf("%d\n", *p);
2, 间接访问是访问地址表示的数据,可以获取也可以修改 |
|