|
路线栈欢迎您!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前言
在学习指针那些千奇百怪的符号前,我们要先来熟悉两位老朋友。
- & 是取地址符号,获得某个变量的地址。
- * 是取值符号,可以根据根据地址,取出该地址存储的数据。
也就是说,* 和 & 是可以连起来使用的。
基础程序:
- #include<stdio.h>
- int main()
- {
- int num=6;
- int *p=#
- }
复制代码
输出实例1:使用变量 num ,输出变量 num 的值。
- printf("%d\n",num);
- // 输出结果:
- 6
复制代码
输出实例2:使用 *p ,输出变量 num 的值。
- printf("%d\n",*p);
- // 输出结果:
- 6
复制代码
注意:使用指针输出所指地址的值时,指针前要记得加 *。
小结:num 和 *p 输出的,都是变量 num 的值。
输出实例3:&num ,使用取地址符 &,输出变量 num 的地址。
- printf("%p\n",&num);
- // 输出示例:
- 000000000062FE1C
复制代码
注意:此时输出的是变量 num 的地址。
输出实例4:p ,使用指针 p ,输出变量 num 的地址。
- printf("%p\n",p);
- // 输出示例:
- 000000000062FE1C
复制代码
注意:输出指针所指地址时,指针前不加星号。
此时输出的是变量 num 的地址。
小结:&num 和 p 输出的,都是 num 的地址。
输出实例5:&p ,使用取地址符 &,输出指针变量自身的地址。
- printf("%p\n",&p);
- // 输出示例:
- 000000000062FE10
复制代码
注意:此时输出的是指针变量 p 的地址,而不是num的地址。
输出实例6:&*p
- printf("%p\n",&*p);
- // 输出示例:
- 000000000062FE1C
复制代码
&*p 意思是获取 *p 的地址,而 *p 指的是num,所以输出的就是num的地址,也就是p。
输出实例7:*&p
- printf("%p\n",*&p);
- // 输出示例:
- 000000000062FE1C
复制代码
*&p 意思是取出 &p 地址处存的值,&p 指的是 p 这个指针变量的地址,那么根据地址取出的就是 p 这个指针变量。
小结:可以发现 &*p 和*&p 其实都是 p,也就是num的地址。
作者:小木之
|
|