C语言笔试题精选2---int a[10];问下面哪些不可以表示a[1]的地址?
问题: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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。