8楼都是说的什么乱七八糟的 别误人子弟!!不过你们请看清楚房主究竟哪个地方不懂再回答好不好! 我看的窝火!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
你这个问题很简单~ 指针相减你知道结果是什么吗?
指针++
--操作你肯定不陌生吧!
不过指针还有一个相减的操作如果2个int型指针相减结果不是单纯的地址相减他还会除以int型大小这里就是4啦
sizeof(int)=4~
你这里假设 p=1004
a[0]=1000;
p-a[0]的意思就是 (1004-1000)/sizeof(int)=1; 这里你可能会说a[0]应该等于1啊!不过其实这里的a[0]是一个地址;因为这是一个双重数组;通俗说就是数组的数组;这就是多重数组和普通数组的区别;下面我举例说了一下:
例子 int a[10][4]; a[7]-a[5]=8意思就是a[7]的地址减去a[8]的地址然后除以int的大小(就是4)结果为8因为a[5]到a[7]有8个整形元素;懂了吧?有人会说我瞎说!不过这个是2重数组的问题; a[5] a[7] 这里是指针 是地址 是指向当前数组的列指针;a[7] ++ 就是a[7][1]而a[7]就是 a[7][0]; 就像 a == a[0][0] == a[0];一样;a是行指针 a++ 就是a[1][0];
a[0]是列指针a[0]++
就是 a[0][1]; 而 a[0][0]是int 型的数值了 如果a[10][5]={1,2,3,4,5,6,7,8,9,10.........}; 则a[0][0]++ == 2;所以你这里的P就是列指针,p++
就是指向下一个数组元素;p-a[0]; 结果是整形;它的值就是他距离首地址有几个元素;
指针相加是没有意义的!
有不懂的你加我QQ 522353113~
[
本帖最后由 jcw08120110 于 2011-8-14 14:40 编辑 ]