C语言笔试题精选2---int a[10];问下面哪些不可以表示a[1]的地址?

来源:互联网 发布:海珠区淘宝美工培训 编辑:程序博客网 时间:2024/06/05 20:11

问题:int a[10];问下面哪些不可以表示a[1]的地址?

A、a+sizeof(int)

B、&a[0] + 1 

C、(int*)&a+1

D、(int*)((char*)&a+sizeof(int))


#include <stdio.h>int main(){int a[10] = {1,2,3,4,5,6,7,8,9,0};printf("*******输出地址*******\n");printf("a[0]                          = %d\n",a);printf("a+sizeof(int)                 = %d\n",a+sizeof(int));  //a+1为地址加4,这里相当于地址加了16 printf("&a[0] + 1                     = %d\n",&a[0] + 1);  // 这个加1也是地址加4 printf("(int*)&a+1                    = %d\n",(int*)&a+1);  // 加1也是地址加5 printf("(int*)((char*)&a+sizeof(int)) = %d\n",(int*)((char*)&a+sizeof(int)));//这里先把地址变成指向char类型指针,然后+4就是按char类型长度加,最后变成指向整型 printf("\n"); printf("*******输出值*********\n");printf("a[0]                          = %d\n",*a);printf("a+sizeof(int)                 = %d\n",*(a+sizeof(int)));printf("&a[0] + 1                     = %d\n",*(&a[0] + 1)); printf("(int*)&a+1                    = %d\n",*((int*)&a+1));printf("(int*)((char*)&a+sizeof(int)) = %d\n",*((int*)((char*)&a+sizeof(int))));return 0;}

输出:


结果:

答案是A

0 0
原创粉丝点击