本帖最后由 jackz007 于 2024-4-20 00:12 编辑
指针是一种特殊的整型数,用于指示变量在内存中的储存位置,其数值是内存地址的编码,其性质与仓库中货架挡位的编码相似,是为了迅速找到储存的货物而存在。
之所以说指针是一种特殊的整型数,是因为这种变量所占据的内存空间取决于 CPU 的字长,对于 32 位程序而言,指针一律为固定的 32 位,每个指针占用的是 4 个字节,其类型等同于 unsigned int,对于 64 位程序而言,指针一律为固定的 64 位,每个指针占用的是 8 个字节,其类型等同于 unsigned long long。
建议考察、运行下面的代码,通过对照源代码以及对应的屏显信息以加深对于指针的理解#include <stdio.h>
int main(void)
{
int k , * p , ** q ;
k = 1234 ;
p = & k ; // p 指向变量 k,p 所指向的内存中存放的是整数 k 的数值
q = & p ; // q 指向指针 p,q 所指向的内存中存放的是指针 p 的数值
printf(" k = %d\n" , k) ;
printf(" * p = %d\n" , * p) ; // * p 是整型数,用 %d 显示其数值
printf("** q = %d\n" , ** q) ; // ** q 是整型数,用 %d 显示其数值
printf(" p = %p\n" , p) ; // p 是指针,用 %p 显示指针地址(变量 p 的数值,十六进制形式)
printf(" q = %p\n" , q) ; // q 是指针,用 %p 显示指针地址(变量 q 的数值,十六进制形式)
printf(" * q = %p\n" , * q) ; // * q 是指针,用 %p 显示指针地址(变量 * q 的数值,十六进制形式)
}
编译、运行实况:D:\[exercise]\C>g++ -o x x.c
D:\[exercise]\C>x
k = 1234
* p = 1234
** q = 1234
p = 0105faf8 【注意】:p 是一个指针
q = 0105faf4 【注意】:q 是另一个指针
* q = 0105faf8 【注意】:* q 就是指针 p
D:\[exercise]\C>
|