在以往的学习中,我们了解到,c语言中变量都是存储在计算机中特定的内存单元中,而内存中的每个单元都对应了唯一的地址,而如果我们要去获取这个地址则我们需要用到一个符号:
&——取址运算符
%p——地址类型
例1.1
#include <stdio.h>
int main(void)
{
int a=0,b=1;
char c='A';
printf("a is %d,&a is %p\n",a,&a);
printf("b is %d,&b is %p\n",b,&b);
printf("c is %c,&c is %p\n",c,&c);
return 0;
}
运行结果为:
a is 0,&a is 000000000061FE1C
b is 1,&b is 000000000061FE18
c is A,&c is 000000000061FE17
a、b均为整型变量,c为字符型变量,输出变量对应的存储的内容是用对应的特殊符号
%d——a 整型输出对应整型
%c——c 字符型输出对应字符型
%p——&a 地址型输出对应地址(&a为取得对应a这个存储单元的地址),其中地址在不同的操作环境下,大多不会相同,即换一台电脑操作上述的代码,得到的地址可能与上述的运行的结果不同。且需要注意的是,地址值是用一个十六进制的无符号整数表示的。
其中整型变量占四个字节,字符型变量占一个字节,而存储空间的首地址默认作为该存储单元的地址,并被操作者执行查找。
内存可视化:
变量名 | 变量的值 | 变量地址 | 占用字节 |
c | A | 000000000061FE17 | 1 |
b | 1 | 000000000061FE18 | 4 |
0 | 000000000061FE19 | ||
0 | 000000000061FE20 | ||
0 | 000000000061FE21 | ||
a | 0 | 000000000061FE1C | 4 |
0 | … | ||
0 | … | ||
0 | … |