C |数组|问题9

预测以下程序的输出:

null

#include <stdio.h>
#define SIZE(arr) sizeof(arr) / sizeof(*arr);
void fun( int * arr, int n)
{
int i;
*arr += *(arr + n - 1) += 10;
}
void printArr( int * arr, int n)
{
int i;
for (i = 0; i < n; ++i)
printf ( "%d " , arr[i]);
}
int main()
{
int arr[] = {10, 20, 30};
int size = SIZE(arr);
fun(arr, size);
printArr(arr, size);
return 0;
}


(A) 20 30 40 (B) 20 20 40 (C) 50 20 40 (D) 编译时错误 答复: (C) 说明: 问题的关键在于表达: *arr+=*(arr+n–1)+=10; 复合运算符(此处为 += )具有从右到左的关联性。前10个元素被添加到数组的最后一个元素。然后将结果添加到数组的第一个元素中。 这个问题的小测验

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