C++面试宝典第6题:访问数组和联合体元素

题目

        阅读下面的代码段,并给出程序的输出。

        (1)访问数组元素。

int a[] = {61, 62, 63, 64, 65, 66};
int *p = (int *)(&a + 1);
printf("%d, %d\n", *(a + 1), *(p - 1));

        (2)访问联合体元素。

union
{
    short i;
    char x[2];
}a;

a.x[0] = 10;
a.x[1] = 1;
printf("%d\n", a.i);

C++面试宝典第6题:访问数组和联合体元素_第1张图片

解析

        这道题主要考察应聘者对数组、指针、联合体及内存布局的理解。

        先来看第一道小题,访问数组中的元素。在C/C++语言中,数组的首地址指的是数组的第一个元素的地址。这个地址可以通过数组名加上一个下标来访问,其中下标从0开始。比如:有一个整数数组int arr[5],那么数组的首地址可以通过&arr[0]来获取,这个地址指向数组的第一个元素arr[0]。注意:数组名本身就是数组的首地址,故arr和&arr[0]是等价的。

        在本小题中,a是数组首元素地址,a + 1为数组第二

你可能感兴趣的:(C++面试宝典100题,c++,面试,数组元素,联合体元素)