指针问题
#include<stdio.h>int main()
{
int a = {1,2,3,4,5,6,7,8,9,10,11,12};
int*p;
for(p = a;p<(a+12);p++)
{
if ((p-a)%4 == 0)
printf("\n");
printf("%4d\t",*p);
}
}
我想问下if中的p-a问题:
P和a不是都代表地址吗,怎么就可以相减了呢,减了之后数字代表什么东西,地址还是什么? 根据指针类型的不同,做加减运算的时候操作时不同的,所以你看 很多时候定义的int *p;可以p++对吧;
这里 int a 本身 a等同于 int (* p) 类型的指针常量。而 a相当于 int *p类型的指针。这里指针的类型只是关系到做加减时候的运算量大小。a+1等同于向后偏移一个元素。也就是地址+4(32位系统)。所以说同类型的指针相减也就是中间所相隔的元素个数(p-a等于中间相隔的元素的个数)而不是地址 明白了,哈哈{:5_106:}
页:
[1]