一:基础认知:
Point_Type* Point_Name = & (var_Type var)
指针类型* 指针名 = & 变量名(变量和指针必须为同一数据类型,因为是按数据类型的不同来划分内存大小的)
int a=12;
int* p=NULL;
p=&a;
printf(*p);
其中:
&(取址符):p=&a 是返回a的地址赋值给指针变量p
* :*p 是访问并返回指针变量p所存储的地址(a的地址)里面的值(a的值)
例如:把int型指针p指向int型变量var:
其中,&(取址符)的作用是取var的地址;而指针p是一个存储变量地址的指针变量;在指针p前面加一个‘ * ’则是访问指针p存储的变量地址所在的地址存储的值(即访问var的值)
输出一个指针变量保存的内容(也就是地址)用 %p :
var把自己的地址赋给p, 所以p(int指针型变量)的内存地址上存储的是var变量的地址;
*p是p存储的变量(var)地址存储的值(12);
所以:p==&var ;
*p==var;
图解:
例如:把一个int型变量的地址赋值给int型指针变量p(在int型指针变量p上存储一个int型变量的地址)