# include <stdio.h>
int main(void)
{
int * p;
int i = 3;
p = &i;
}
上面代码:
int * p:正解:p是变量的名字,int * 是数据类型,表示p变量存放的是int类型变量的地址
错误理解:*p是变量名,它的数据类型是int类型
p是变量名,int * 是它的数据类型,所谓int * 类型实际上就是存放int 变量地址的类型
p = &i; 1、p保存的是i变量的地址,所以取地址i就等同于p,即p指向i
2、p不是i,i也不是p,因此修改i的值不影响p,修改p的值也不影响i
3、如果一个指针变量指向一个普通变量,则*指针变量 就完全等同于 普通变量,比如p指向i,则 *p 就完全等同于 i,*p变量 和 i变量 可以互换
4、* p:表示的以p的内容为地址的变量
指针和指针变量:
指针就是地址,地址就是指针,地址是内存单元的编号。指针就是一个值,相当于一个常量,所以没什么好说的;
指针变量是存放地址的变量,它相当于数据类型的变量,所以研究的是指针变量;
但是要注意在我们叙述时,指针变量通常被简称为指针。