那么*(pt+i)+j 想当然就是 i 行 j 列的地址了。
那么 pt + i 是什么?是 i 行的地址,那么我再加 j 那就是 ( i + j ) 行的地址啦~
呵呵,没了~ 还可以这么看:
若:typedef int vec;
则:
int test={1,2,3,4,5,6,7,8,9,0,9,10};
int (*pt)=test;
等价于
vec test={1,2,3,4,5,6,7,8,9,0,9,10};
vec* pt = test;
进一步,
(pt+i)+j等价于pt+(i+j)
*(pt+i)+j 等价于pt+j
如果对上述描述还是感觉比较抽象,不妨把类型vec当成类型int来看 我勒个去,俺是零基础,各种看不懂,但还是支持下。 总结一下
注意pt指向整个数组的首地址,而pt是指向数组第一行的首地址
printf("%x\n",pt);
printf("%x\n",(*pt));
printf("%x\n",pt);
printf("%x\n",(*pt));
printf("%x\n",test);
12ff50
1
12ff5c
2
12ff50
页:
[1]