C程序|集26的输出

预测以下C程序的输出。

null

问题1

#include <stdio.h>
int main()
{
int arr[] = {};
printf ( "%d" , sizeof (arr));
return 0;
}


输出:0 C(或C++)允许大小为0的数组。当使用空初始化列表声明数组时,数组的大小将变为0。

问题2

#include<stdio.h>
int main()
{
int i, j;
int arr[4][4] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16} };
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
printf ( "%d " , j[i[arr]] );
printf ( "" );
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
printf ( "%d " , i[j[arr]] );
return 0;
}


输出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

数组元素是使用指针算法访问的。所以arr[i][j]和j[i[arr]]的含义是相同的。它们都表示(arr+4*i+j)。同样,arr[j][i]和i[j[arr]]的含义相同。

问题3

#include<stdio.h>
int main()
{
int a[2][3] = {2,1,3,2,3,4};
printf ( "Using pointer notations:" );
printf ( "%d %d %d" , *(*(a+0)+0), *(*(a+0)+1), *(*(a+0)+2));
printf ( "Using mixed notations:" );
printf ( "%d %d %d" , *(a[1]+0), *(a[1]+1), *(a[1]+2));
return 0;
}


输出:

Using pointer notations:
2 1 3
Using mixed notations:
2 3 4 

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享