初识指针,简单示例程序:
/* 指针就是地址,地址就是指针 地址就是内存单元的编号 指针变量是存放地址的变量 指针和指针变量是两个不同的概念 但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样 */ # 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; }