初识指针,简单示例程序:



/*
指针就是地址,地址就是指针
地址就是内存单元的编号
指针变量是存放地址的变量
指针和指针变量是两个不同的概念
但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样
*/
# include <stdio.h>

int main(void)
{
int * p; // p是变量的名字, int * 是连在一起的,他表示 p 变量存放的是int类型变量的地址
//int * p 不表示定义了一个名字叫*p的变量
// int * p 应该这样理解:p是变量名, p变量的类型是int *类型
// 所谓 int * 类型, 实际就是存放int变量地址的类型
int i = 3;
int j;

p = &i;

/*
1. p 保存了i的地址,因为p指向i
2. p 不是 i, i也不是p, 更准确的说修改p的值不影响i的值,修改i的值也不会影响p的值
3. 如果一个指针变量指向了某个普通变量,则
* 指针变量 就完全等同于,普通变量

例子:
如果p是个指针变量,并且p存放了普通变量i的地址
则p指向了普通变量i
*p 就完全等同于 i
或者说: 在所有出现 *p 的地方都可以替换成i
在所有出现 i 的地方都可以替换成*p

*p 就是以p的内容为地址的变量

*/

j = *p; //等价于 j = i
printf("i = %d, j = %d\n", i, j);

附注:
* 的含义
1.乘法
2.定义指针变量
int * p;
//定义一个名字叫 p 的变量, int * 表示p只能存放int变量的地址
3.指针运算符
该运算符放在已经定义好的指针变量的前面
如果 p 是一个已经定义好的指针变量
则 *p 表示 以p的内容为地址的变量
return 0;
}