- #include <stdio.h>
- int main()
- {
- int a[3][4] = {1,3,5,7,9,11,13,15,17,19,21,23};
- int *p,i,j;
- for (p = a[0];p < a[0] + 12;p++)// 使 p 依次指向下一个元素
- {
- if((p - a[0]) % 4 == 0)// p 移动4交换行
- {
- printf("\n");
- }
- printf("%4d",*p);// 输出 p 指向的元素的值
- }
- printf("\n");
- p = a[0];
- scanf("%d,%d",&i,&j);// 指定要输出的数组的行和列
- printf("a[%d,%d] = %d\n",i,j,*(*(a + i) + j));// 输出指定元素的值
- printf("a[%d,%d] = %d\n",i,j,*(p + i) + j);// 输出指定元素的值
- return 0;
复制代码
为什么最后两个输出不同?若将最后一语句改成:*(*(p + i) + j) 则系统报错:error C2100: illegal indirection
|