1.union test { int x; char y; float z; } ;
在32位平台上,这个联合的大小是多少个字节?
4
①union联合体是由最大的成员决定的,因此找出最大成员
②在32位系统中,int、float、long都是32位,4个字节
2已知int a[3][4];则下列能表示a[1][2]元素值的是
A、*(*(a+1)+2)
B、*(a+1+2)
C、(&a[0]+1)[2]
D、*(a[0]+1)
A
这是一个三行四列的数组
*(a+1)表示第二行的首地址,和a[1]一样。
*(a+1)+2第二行第三个数字的地址
*(*(a+1)+2)就是第二行第三个数字的值
3.下面的程序的输出是什么?
#include<stdio.h>
int main(void)
{
int n;
char y[10] = "ntse";
char *x = y;
n = strlen(x);
*x = x[n];
x++;
printf("x=%s\n",x);
printf("y=%s\n",y);
return 0;
}
A、x=atse,y=
B、x=tse,y=
C、x=atse,y=e
D、x=tse,y=e
B
解析:
1、char *x=y ;//指针变量x指向数组y的首地址
2、n=strlen(x) ;//即等价于求4=strlen(y[10])=4
3、*x=x[n]; //表示指针变量x指向x[4]=y[4]='/0',x[4]就是y[4]='\0',那么*x=x[n]就是把x指向的字符串首元素改为'\0',而y遇到第一个字符就是'\0',所以结束,y输出为空。
4、x++表示x+1之后x指向第二个字符t,所以第一个输出x=tse
原数组变为 “ /0tse/0”
4.下列程序段的时间复杂度是( )
count = 1;
for(k=1;k<2n;k*=2)
for(i=1;i<4n;i+=2)
count++;
A、O(n2)
B、O(8n2)