C程序的输出| 26套
预测以下 C 程序的输出。
问题 1
#include
int main()
{
int arr[] = {};
printf("%d", sizeof(arr));
return 0;
}
输出:0
C(或 C++)允许大小为 0 的数组。当数组声明为空的初始化列表时,数组的大小变为 0。
问题2
#include
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("\n");
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
int main()
{
int a[2][3] = {2,1,3,2,3,4};
printf("Using pointer notations:\n");
printf("%d %d %d\n", *(*(a+0)+0), *(*(a+0)+1), *(*(a+0)+2));
printf("Using mixed notations:\n");
printf("%d %d %d\n", *(a[1]+0), *(a[1]+1), *(a[1]+2));
return 0;
}
输出:
Using pointer notations:
2 1 3
Using mixed notations:
2 3 4