关于c语言指针变量的运算问题
请教:# include <stdio.h>
int main(void)
{
int a;
int * p = a;
int * q = &a;
printf("%d\n", p);
printf("%d\n", q);
intj ;
j = q - p;
printf("p和q相隔的地址为%d\n", j);
return 0;
}
输出结果为:
1638196
1638204
p和q相隔的地址为2
我想问的是为什么p和q相隔的地址为2不应该是(1638204-1638196 =8)的嘛 这里相隔的地址实际内存地址的确相差8,但实际落实到数组中,因为是int数组,每个单元实际占4个字节,所以对于int大小的数组而言相差2。同理,就好比*(a+1)里面的1一样,并不是单纯内存地址加1,而是相对于int的地址+1,实际就是+4,相当于a。满意的话麻烦采纳评价,谢谢
页:
[1]