#include<bits/stdc++.h>
using namespace std;
int main()
{
int a=10;
char b='c';
float c=10.0;
double d=20.000;
int *a1=&a;
char *b1=&b;
float *c1=&c;
double *d1=&d;
printf("%d %x\n",a1,a1);
printf("%d %x\n",b1,b1);
printf("%d %x\n",c1,c1);
printf("%d %x\n",d1,d1);
cout<<endl;
printf("%d %x\n",&a1,&a1);
printf("%d %x\n",&b1,&b1);
printf("%d %x\n",&c1,&c1);
printf("%d %x\n",&d1,&d1);
}
输出
6946556 69fefc
6946555 69fefb
6946548 69fef4
6946536 69fee8
6946532 69fee4
6946528 69fee0
6946524 69fedc
6946520 69fed8
为什么double的首地址 和float的首地址隔了12个字节, 有什么规律?