内存区与指针
内存区的每一个字节都有一个编号,这就是地址。在 C 语言中,访问元素主要有直接访问和间接访问两种方式。
直接访问
如 a = 5;。系统在编译时已经对变量分配了地址。例如,若变量 a 分配的地址是 2000,则该语句的作用就是把常数 5 保存到地址为 2000 的单元。
间接访问
如 scanf("%d", &a);。调用函数时,把变量 a 的地址传递给函数 scanf。函数首先把地址保存到一个单元中,然后把从键盘接收到的数据通过所存储的地址保存到 a 变量中。
指针的定义与使用
在 C 语言中,指针是一种特殊的变量,它是存放地址的。假设我们定义了一个指针变量 int *pointer 用来存放整型变量 i 的地址:
int i = 2000;
int *pointer; // 定义指针变量
pointer = &i; // 获取地址并赋值
printf("%d\n", *pointer); // 解引用取值
指针和指针变量的区别
- 指针:知道一个变量的地址,就可以通过地址来访问变量。因此,变量的地址称为该变量的指针,指针本质上就是地址。
- 指针变量:C 语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。
使用指针变量时的注意事项
- 指针变量前面的
*,表示该变量的类型为指针变量。例如,int *pointer;。 - 在定义指针变量时,必须指定基类型。基类型指针指向变量的类型。
- 将
float变量的地址放到指向整型变量的指针变量中是错误的。指针变量中只能存放地址,不要把值直接赋值给指针变量。&a表示变量a的地址。
理解了指针的概念,就能更好地掌握 C 语言的内存管理机制,这也是后续学习复杂数据结构的基础。


