学科分类
目录
C语言

指针的概念

内存地址就是指针,是一个常量,通过指针可以访问内存中存储的数据。例如,定义一个int类型的变量,示例代码如下:

int a=10;

上述代码定义了一个int类型的变量a,存储了整型的数据10,编译器会根据定义变量的类型为变量a分配4字节的连续内存空间。假如这块连续空间的首地址为0x0037FBCC,变量a占据0x0037FBCC~0x0037FBD0内存区域共4个字节的空间,0x0037FBCC就是变量a的地址。变量a在内存中的存储如图1所示。

图1 内存单元和地址

在图1中,变量a的地址为0x0037FBCC,0x0037FBCC就是指向变量a的指针,通过该指针可以访问变量a。

如果有一个变量专门用来存放地址(指针),这个变量就被称为“指针变量”。指针和指针变量是两个完全不同的概念,指针是一个地址,而指针变量是存放地址(指针)的变量。

在C语言程序中,定义指针变量的语法格式如下:

变量类型 *变量名;

关于上述语法格式的介绍如下:

(1)变量类型指的是指针指向的变量的数据类型,即指针类型在内存中的寻址能力,如char类型决定了指针指向1个字节地址空间,int类型决定了指针变量指向4个字节地址空间。

(2)*表示了定义的变量是指针类型。

(3)变量名是存储内存地址的名称,即指针变量,其命名方式遵循标识符命名规则。

下面的代码定义了不同数据类型的指针变量,具体如下:

char* i;
int* t;
double* c;
long* a;
long double* s;
unsigned int* T;

上述代码定义了各种类型的指针变量,在实际开发中,人们总会把指针变量简称为指针,如指针变量i往往会简称为指针i,但读者要理解其中的含义。

若将编写程序比喻成购买火车票,程序执行就类似于验票乘车去往目的地。如果把火车当作计算机内存,那么火车上有顺序排列的座位号相当于内存中的地址编号,座位上的乘客相当于存储在内存中的数据,通过座位号可以准确找到乘客,类似于使用地指针访问内存中的数据。

如果把乘务员比作指针变量,乘务员通过查看座位号就能确认乘客信息,这就好比通过内存地址获取内存中的数据。

点击此处
隐藏目录