|
发表于 2024-4-19 21:34:08
|
显示全部楼层
本帖最后由 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>
复制代码 |
|