#include int main(void) { static int a[4][4]; }

问题描述:

#include int main(void) { static int a[4][4]; }
#include
int main(void)
{ static int a[4][4];
int *p[4],i,j;
for(i = 0; i < 4; i++)
p[i] = &a[i][0];
for(i = 0 ; i < 4; i++) {
*(p[i] + i) = 1 ;
*(p[i] + 4 - (i + 1)) = 1;
}
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
printf("%2d",p[i][j]);
printf("\n");
} return 0;
}
具体过程是什么、
1个回答 分类:综合 2014-10-28

问题解答:

我来补答
for(i = 0; i < 4; i++) p[i] = &a[i][0]; 4个指针 指向 a 数组的4个行首.
*(p[i] + i) = 1 ; // p[i][i] == a[i][i](对角线上的元素)赋值1
*(p[i] + 4 - (i + 1)) = 1; //p[i][3-i] == a[i][3-i](另一对角线上的元素) 赋值1
printf("%2d",p[i][j]); // 双重循环输出a[i][j] 存放的 数值.
因为 是 static a[][],元素 初始化为全 0
输出:
1 0 0 1
0 1 1 0
0 1 1 0
1 0 0 1
 
 
展开全文阅读
剩余:2000