第八章——地址和指针 第一节——指针变量的定义和初始化

第八章——地址和指针 第一节——指针变量的定义和初始化

亓翎_Re-Tikara Lv5

变量(从内存层次的重理解)

   变量实质上代表了“内存中的某个存储单元”。若在内存中定义一个变量,那么这个变量的内存也就是确定的了。
   即,定义一个变量,相当于插了个路标,指向一定的存储空间。
   举个通俗一点的例子:假设你要去一栋教学楼中的一间教室,去取某个物品,此时你要去的教室名“4 教 101”便是 变量名,而教室钥匙便是 指针,教室便是 内存空间,你要取的物品便是 存储值

   我们在程序中只需要指出变量名(教室名),无需知道每个变量在内存中的具体位置(房间具体在教学楼的哪个位置),每个变量与具体地址的联系是由 C 语言编译系统来完成的。对于变量的存取操作就是对某个存储单元进行操作。这种 直接按变量的地址存取变量值 的方式就称作 直接存取


指针

   指针也可以视作一种变量,而这种变量用来存放的是内存地址。

1
2
3
4
5
int *p;
int a = 9063;

p = &a;

1.png

间接存取

   这种通过变量 p 到变量 a 的地址,然后再存取变量 a 的值的方式称为“间接存取”
   指针变量 p 指向了变量 a 的含义是:指针 p 中存放了变量 a 的地址。

定义

   一个变量的地址

指针变量

   专门用来存放变量地址的变量。
.png

.png

定义指针的形式

1
2
3
4
类型名 *指针变量名1,*指针变量2,……

int *pi,*pj;

  • *是一个说明符,说明该变量指针变量。
  • *不可省略,否则就变成了 int pi , pj(定义两个整型变量)。
1
2
3
4
5
6
double *pd;
// 只能是指向double型的变量,即存放double型变量的地址。

char *s1,*s2;
// 只能是指向char型的变量,即存放char型变量的地址。

说明

1
2
3
4
int **p , *s , k = 20;
s = &k;
p = &s;

  • 指针 p 的基类型是 int 类型的指针。
  • &是求地址运算符。
  • 因为基本数据类型 int、float、char 等所需存储的空间不同,所以需要定义指针变量的基类型。
  • *是指针运算符,返回其所指对象的值。

.png


考点

  • 指针变量定义的形式:

存储类型 类型名 指针变量名 1, 指针变量名 2,…

  • 也可以定义的同时赋初值:

存储类型 类型名 *指针变量名 1 = [初值],…

  • “存储类型”可以缺省, 缺省时的存储类型为自动型 auto
  • 定义指针变量时,指针变量名前必须有一个*,在此它是定义指针变量的标志,不同于后面所说的“指针运算符”
  • 初值的形式通常有三种:“&普通变量名”、“&数组元素”和“数组名”

C 语言规定:

   数组名代表的是数组的首地址,即第一个元素的地址。

  • 标题: 第八章——地址和指针 第一节——指针变量的定义和初始化
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-07 02:21:28
  • 更新于 : 2026-02-07 02:26:19
  • 链接: https://re-tikara.fun/Blog/posts/4944f5d8/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
第八章——地址和指针 第一节——指针变量的定义和初始化