int main() { int *pa=NULL; int *pb=pa+15; printf("%x",pb); return 0; } 请问结果为什么是3C即60
答案:3 悬赏:60 手机版
解决时间 2021-02-03 05:40
- 提问者网友:低吟詩仙的傷
- 2021-02-02 11:55
int main() { int *pa=NULL; int *pb=pa+15; printf("%x",pb); return 0; } 请问结果为什么是3C即60
最佳答案
- 五星知识达人网友:街头电车
- 2021-02-02 13:18
int *pa=NULL; //此处表示pa的值是0
int *pb=pa+15; //pb等于pa 值向后偏移15个int类型的空间,一个int类型占4字节,所以,结果是3c(60=15*4)
关于指针变量的加法,可以仔细看一下书中的描述
int *pb=pa+15; //pb等于pa 值向后偏移15个int类型的空间,一个int类型占4字节,所以,结果是3c(60=15*4)
关于指针变量的加法,可以仔细看一下书中的描述
全部回答
- 1楼网友:青尢
- 2021-02-02 14:40
pa指向数组a的首地址,pb指向数组a偏移量为15的地方,0x36ec+0xf(即15)*4(int *占4个字节)=0x3728,但你的程序有问题,因为pb所指向的内存内容并不固定。
楼上的,是sizeof(int *)好不好,不要误导小同学,本题碰巧int 和int *都是4,你换个short,或char试试!
楼上的,是sizeof(int *)好不好,不要误导小同学,本题碰巧int 和int *都是4,你换个short,或char试试!
- 2楼网友:雪起风沙痕
- 2021-02-02 13:41
指针的概念
指针就是一个存放地址的整数
你给出的代码,都是在将指针的值,作为整数,以16进制输出。
指针的算术运算,都是地址的运算。因为指针是有类型的,所以运算的结果,取决于指针的类型。
比如你上面的代码
int *pa = NULL;
NULL就是0,也就是说 pa保存的地址是0。
int *pb = pa + 15; pb 是在 pa 的地址上,偏移15个单位。因为pa和pb都是int类型的指针,所以1个单位为sizeof(int),(在32位编译器下,sizeof(int)为4。)。pa是0,pb = 0 + 15 * 4 = 60
指针就是一个存放地址的整数
你给出的代码,都是在将指针的值,作为整数,以16进制输出。
指针的算术运算,都是地址的运算。因为指针是有类型的,所以运算的结果,取决于指针的类型。
比如你上面的代码
int *pa = NULL;
NULL就是0,也就是说 pa保存的地址是0。
int *pb = pa + 15; pb 是在 pa 的地址上,偏移15个单位。因为pa和pb都是int类型的指针,所以1个单位为sizeof(int),(在32位编译器下,sizeof(int)为4。)。pa是0,pb = 0 + 15 * 4 = 60
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯