指针

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;
  • 指针变量也是变量,只不过它存放的不能使内存单元的内容,只能存放内存单元地址。
  • 普通变量前不能加 *
  • 常量和表达式前不能加 &。

你可能感兴趣的:(指针)