| 
 | 
 
路线栈欢迎您!
您需要 登录 才可以下载或查看,没有帐号?立即注册 
 
 
 
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的地址。 
 
作者:小木之 
 |   
 
 
 
 |