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;
运行结果:
对象地址通常是用十六进制数表示。但是不同的比那一起或不同的运行环境下,基数、位数等显示形式以及具体数值都会有所不同。
注:
- 取址运算符&的功能是取得对象的地址,表示对象地址的转换说明为%p。
- 单目运算符&通常被称为 取址运算符。将&运算符写在对象名之前,就可以得到该对象的地址。
对于使用 register 关键字声明的寄存器对象,不能加上取址运算符 &。
int main(void){
register int x;
printf("%p\n", &x);
return 0;
}
当运行该程序时,会在编译时报错。
[Error] address of register variable 'x' requested