假期刷题day2

假期刷题day2

1、以下程序运行后的输出结果是( D)

#include 
void fun(char **p)
{
int i;
for(i = 0; i < 4; i++){
printf("%s", p[i]);
}
int main()
{
char *s[6] = {"ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWX"};
fun(s);
printf("\n");
return 0;
}

A: ABCDEFGHIJKL
B: ABCD
C: AEIM
D: ABCDEFGHIJKLMNOP

p是s的临时拷贝,访问的是p[0]到p[3]就是s[0]到s[3]
如上就是D

2、数组 a 的定义为: int a[3][4]; 下面哪个不能表示 a[1][1] (C )
A: *(&a[0][0]+5) B: ((a+1)+1) C: *(&a[1]+1) D: *(a[1]+1)

直接上图展示
假期刷题day2_第1张图片

解析:
A选项a[0][0]往后5个位置就是a[1][1]
B选项*(a+1)就是a[1],然后加一解引用就是a[1][1]
C选项*(&a[1]+1)得到的是a[2],表示后面的4个元素
D选项a[1]就是a[1][0]+1就是a[1][1]

3、 void (*s[5])(int) 表示意思为( B)
A: 函数指针 B: 函数指针数组 C: 数组指针函数 D: 语法错误

void()(int),可以知道这是函数,里面是(*s【5】)是函数指针,表示数组元素存的是指向5个void ()(int)型的函数

4、在64位操作系统上,下面程序返回结果是(C)

int main()
{
int *k[10][30];
printf("%d\n", sizeof(k));
return 0;
}

A: 4 B: 8 C: 1200 D: 2400

30 * 10 * 4=1200
5、假设函数原型和变量说明如下,则调用合法的是(C )

void f(int **p);
int a[4]={1,2,3,4};
int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *q[3]={b[0],b[1],b[2]};

A: f(a); B: f(b); C: f(q); D: f(&a);

调试只要C正常

你可能感兴趣的:(c++,c语言,数据结构)