首页 > 试题广场 >

下面程序的输出结果是intmain(){inta[5]={1

[单选题]
下面程序的输出结果是
int main()
{
    int a[5] = {1, 2, 3, 4, 5};
    int *ptr = (int *)(&a + 1);
    printf("%d, %d", *(a + 1), *(ptr - 1));
    return 0;
}

  • 1, 1
  • 1, 5
  • 2, 1
  • 2, 5
在C语言中,数组名只有两种情况表示整个数组:
1. 用sizeof求的数组大小时
int a[5] = {1, 2, 3, 4, 5};
int a_size = sizeof(a);    //a_size = 5 * sizeof(int)
2. 在取址符后时
int *p = &a + 1;    
//这个加一就只是单纯的加一个int型地址长度了,而是一个数组a的长度
除此之外,都是指数组首元素地址
printf("a[0] = %d\n", *a);    //既然是地址,打印值的时候要解引用
如有不当,还望不吝赐教



发表于 2020-12-12 11:36:00 回复(0)
看不懂c的代码。。。为什么前端还要看懂C的代码
发表于 2020-12-12 10:15:51 回复(0)
C
发表于 2020-12-11 16:15:31 回复(0)