一个c++的指针的问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 03:42:05
#include<iostream.h>
void main()
{
char *pc=NULL;
int *pi=NULL;
double *pd=NULL;
cout<<(int)(pc+1)<<(int)(pi+1)<<(int)(pd+1)<<endl<<(int)(pc+3)<<(int)(pi+5)<<(int)(pd+7)<<endl;
}
上面的程序输出的结果为什么是:
148
32056
看不懂啊,望高手指点!

因为
char *pc=NULL;
int *pi=NULL;
double *pd=NULL;
所以pc,pi,pd都指向地址0,
char型1个字节,int型4个字节,double型8个字节。

pc+1就是0+1个char型=1;
pd+1就是0+1个int型=4;
pd+1就是0+1个double型=8;

pc+3就是0+3个char型=3;
pd+5就是0+5个int型=20;
pd+7就是0+7个double型=56;

所以输出148换行(中间有个endl)23056