在c语言中, int*p1,*p2; int a[10]; p1=a;p2=&a[5]; 求p2-p1; 结果是5?还是10?

2025-01-24 09:34:02
推荐回答(4个)
回答1:

任何编译器上的结果都是5
指针减法含义是:两个地址之间有多少个计量单位
那么p2-p1的意思就是p2和p1之间有多少个int,那么不管int是16位还是32位甚至64位,结果总是5 .和int的长度没有丝毫关系

回答2:

p1=a的首地址
p2=a的第五单元的地址
int 占两个/四个字节
所以: p2-p1=5*2 或(5*4)

回答3:

这要看你的编译器是多少位的了,它所定义的int 型是多少字节的了.你可以实际验证一下.我的机子上结果是5

回答4:

5