C语言指针
指针就是地址,地址就是指针。
指针变量就是存放内存单元编号的变量或者说指针变量就是存放地址的变量。
但是
指针变量和指针是两个概念
通常情况下我们叙述时会把指针变量简称为指针,实际它们含义不一样。
指针的本质就是一个操作受限的非负整数。
比如:
int *p; //p是变量的名字,int *表示p变量存放的是int类型变量的地址
//它不表示定义了一个名字叫做*p的变量
//它的正确理解是:p是变量名,p变量的数据类型是int*类型,所谓int*实际就是存放int变量地址的类型
int i=3;
int j;
p=&i;//i的地址赋给了p
j=*p; //j=i=*p=3
/*
1.p保存了i的地址,因此p指向i
2.p不是i,i也不是p,更准确的说是:修改p的值不影响i的值,修改i的值也不会影响p的值
3.如果一个指针变量指向了某个普通变量,则
*指针变量 就等同于 普通变量
*/
int p = 30; //这个是错误的,因为已经定义了p为int*类型,会导致重复定义。