//如何输出地址
#include<stdio.h>
int main()
{
int i=0;
printf("0x%x\n",&i);
//取地址符&,以64位的形式输出i的地址
printf("%p\n",&i);
//
return 0;
//取地址运算和电脑编译器的位数有关
#include<stdio.h>
int main()
{
int i = 0;
int p;
p = (int)&i;//强制类型转换
printf("0x%x\n", p);
//取地址符&,以64位的形式输出i的地址
printf("%p\n", &i);
//p也是以十六位输出
printf("%lu\n", sizeof(int));//取字节数
printf("%lu\n", sizeof(&i));
getchar();
return 0;
}
//32位
0xcffbd4
00CFFBD4 结果一致
4
4
//64位
0x642ff824
000000D8642FF824 结果不一致
4
8
//只能对一个变量才能取地址&
P = (int)&(i++);
是无法读取i的地址的
//对数组取地址
#include<stdio.h>
int main()
{
int a[10];
printf("%p\n", &a);
printf("%p\n", a);
printf("%p\n", &a[0]);
printf("%p\n", &a[1)];
getchar();
return 0;
}
//在64位环境下,得知相邻变量地址差值为4
0x85cff914
000000C585CFF914
4
8