对指针变量的浅显理解

一、变量
变量的定义:数据类型 变量名。定义变量后,系统会在内存中开辟一段内存空间,用于存放该变量的值。同时,也会生成地址编码,与变量对应。

转换:变量名其实是一个符号地址,而变量的内存地址就是变量的物理地址(也叫指针)。程序编辑完后,通过编译器,将符号地址(变量名)转化为变量的物理地址,才能实现对变量(内存里)的数据进行操作。

二、指针变量 p
作用:是用来存放普通变量地址(物理地址)的变量。换句话说,指针变量里面的值就是地址。
&p: 这是指针变量的地址,二级指针变量存放一级指针变量的地址;三级指针变量存放二级指针变量的地址。所以,二级指针变量的值就是一级指针变量的地址,三级同理。
*p : *是取值运算符,*p表示指针变量指向的普通变量地址里的内容(数据)。

小结:
指针就是地址,地址就是指针
指针变量是一个特殊的变量,因为它保存的是普通变量的地址
如果指针变量p保存了变量a的地址,那么称作p指向了a,此时,p就等同于变量a,对p的操作就会影响到a的值。
同一时间,一个指针变量只能指向一个普通变量的地址;但多个指针变量可以指向同一个普通变量的地址。

例:
int a=1;//定义整形变量并赋值
int *p=&a;//定义指针变量并赋值。p是int类型的指针变量,这里保存了a的地址。
printf("%d",*p);//输出p指向变量的值,即a的值。
int **q;//定义二级变量
q=&p;//二级变量保存的是一级变量在内存中的地址
printf("%d",q);//输出一级指针变量p在内存中的地址
printf("%d",*q);//输出一级指针变量p的值,即a的地址
printf("%d",**q);//相当于 *(*q),输出a的地址里的值,即1.

你可能感兴趣的:(C语言,c语言指针)