指针的定义
内存区域中的每字节都对应一个编号,这个编号就是“地址”.
如果在程序中定义了一个变量,那么在对程序进行编译时,系统就会给这个变量分配内存单元.
按变量地址存取变量值的方式称为“直接访问”,如printf("%d",i);、 scanf("%d",&i);等,另
一种存取变量值的方式称为“间接访问”,即将变量i的地址存放到另一个变量中.
在C语言中,指针变量是一种特殊的变量,它用来存放变量地址。
指针变量的定义格式如下:基类型*指针变量名;
例如,
int *i_pointer;
取地址操作符与取值操作符,指针本质
取地址操作符为&,也称引用,通过该操作符我们可以获取一个变量的地址值;
取值操作符为*,也称解引用,通过该操作符我们可以得到一个地址对应的数据。
如下例所示,我们通过&获取整型变量i的地址值,然后对整型指针变量p进行初始化, p中存储的是整型变量i的地址值,所以通过*p(printf函数中的*p)就可以获取整型变量i的值.
p中存储的是一个绝对地址值,那为什么取值时会获取4字节大小的空间呢?这是因为p为整型变量指针,每个int型数据占用4字节大小的空间,所以p在解引用时会访问4字节大小的空间,同时以整型值对内存进行解析.
取地址与取值(引用与解引用)
#include <stdio.h>
//&符号是取地址,指针变量的初始化一定是某个变量取地址
int main()
{
int i = 5;int*p=8i;
printf("i=%d\n", i);//直接访问
printf("*p=%d\n",*p);//间接访问
return 0;
}