1、指针的重要性
C 语言的灵魂。
2、定义:
地址:
- 地址就是内存单元的编号;
- 从 0 开始的非负整数;
- 范围:0~FFFFFFFF(0~4G-1)。
指针:
- 指针就是地址,地址就是指针。
- 指针变量是存放内存单元地址的变量。
- 指针的本质是一个操作受限的非负整数。
分类
1、基本类型指针
int * p;
- p 是个变量名字,int * 表示该 p 变量只能存储 int 类型变量的地址。
int * p;
int j = *p; //error
- 此时,p 并没有保存有效的变量地址,p 中就是一个垃圾数字。
- 不能将一个不确定单元的值赋给另一个变量。
int * p;
int i = 10;
int j;
p = &i; //把 i 的地址发送给 p,即 p 指向 i;这部也可直接写成 int *p = &i。
j = *p;
printf("i = %d,j = %d,*p = %d",i,j,*p) //i = 10,j = 10,*p = 10
p=&i:
p 保存了 i 的地址,所以 p 指向 i。
修改 p 的值不影响 i 的值,修改 i 的值不影响 p 的值。
*p 等价于 i,*p 和 i 在任何地方可以互换。
int i = 10;
int *p = &i;
//等价于
int i = 10;
int *p;
p = &i;
- 指针变量也是变量,只不过它存放的不能使内存单元的内容,只能存放内存单元地址。
- 普通变量前不能加 *
- 常量和表达式前不能加 &。