#include <stdio.h>

int main(void){
int x;
double y;
int arr[3];

printf("x 的地址: %p\n", &x);
printf("y 的地址: %p\n", &y);
printf("arr[0] 的地址: %p\n", &arr[0]);
printf("arr[1] 的地址: %p\n", &arr[1]);
printf("arr[2] 的地址: %p\n", &arr[2]);

return 0;

运行结果:
C语言 显示对象地址_#include

对象地址通常是用十六进制数表示。但是不同的比那一起或不同的运行环境下,基数、位数等显示形式以及具体数值都会有所不同。

注:

  • 取址运算符&的功能是取得对象的地址,表示对象地址的转换说明为%p
  • 单目运算符&通常被称为 取址运算符。将&运算符写在对象名之前,就可以得到该对象的地址。

对于使用 register 关键字声明的寄存器对象,不能加上取址运算符 &。

#include <stdio.h>

int main(void){
register int x;
printf("%p\n", &x);

return 0;
}

当运行该程序时,会在编译时报错。

[Error] address of register variable 'x' requested