c/c++/数据结构错题集1

1.下面函数的执行结果是输出7 4 4

char str[]=”xunlei”;
char *p=str;
int n=10;
printf(%d,%d,%d\n”,sizeof(str),sizeof(p),sizeof(n));

解:
sizeof(str),str是字符数组,所以第一个是7个字节
sizeof§, str的首元素地址赋给指针p,指针总占4个字节
sizeof(n), int型整数,所以4个字节

char str[]=“xunlei”;
char str2[]={‘x’,‘u’,‘n’,‘l’,‘e’,‘i’};
//sizeof(str)计算’\0’,sizeof(str2)不计算’\0’
2.以下关于类初始化成员变量的描述正确的是B C D
A static成员变量可在类定义内初始化
B const成员变量必须在构造函数的初始化列表中初始化
C 成员变量可以在构造函数中初始化
D 数组成员是不能在初始化列表里初始化的
3.不能被重载的运算符 1、. (成员访问运算符) 2、.* (成员指针访问运算符) 3、:: (域运算符) 4、sizeof(长度运算符) 5、?: (条件运算符)
4.有以下程序,程序运行后的输出结果是888

main()
{ int a=666,b=888;
  printf("%d\n",a,b);
}

printf函数参数的入栈顺序是从右到左(888先入栈,接着666入栈)。所以从栈里面读取一个数据时,只会读取最后入栈的数据,也即666.
5.若有 18 个元素的有序表存放在一维数组 A[19] 中,第一个元素放 A[1] 中,现进行二分查找,则查找 A [ 3 ]的比较序列的下标依次为9,4,2,3
解:
注意题目意思:第一元素放到A[1],说明该数组下表1开始。第一次查找 , high = 18, M1 = (1 + 18)/2 = 9 ; A[3] < A[9],high = M1 -1 = 8; M2 = (1 + 8) / 2 =4, 依次类推

6.在c语言程序中,当调用函数时,正确的是 C
A 全局变量开始占用存储单元
B 形参不需要分配存储单元
C 内部变量开始占用存储单元
D 外部变量开始占用存储单元
解:
(1)extern是外部变量,这个变量在程序外部定义,在调用函数前后是始终存在的。
(2)全局变量在函数调用前后始终是占用内存的。
(3)形参本来是不占用存储单元的 但是 只有当函数调用时,发生实参向形参的数据传递时,系统才分配给形参存储单元,调用完之后就释放。
7.

1int *p[4]; //表示指针数组,有四个元素,每个元素都是整型指针。2int (*p)[4]; //表示行指针,所指对象一行有四个元素。3int *p(void); //表示函数,此函数无参,返回整型指针。4int(*P)(void) ;//表示函数指针,可以指向无参,且返回值为整型指针的函数。

8.数组是一种对象
9.有以下程序,程序运行后的输出结果是666
解:
printf函数参数的入栈顺序是从右到左(888先入栈,接着666入栈)。所以从栈里面读取一个数据时,只会读取最后入栈的数据,也即666
10.下面的代码输出是 4 8
在这里插入图片描述
union中的所有成员相对于基地址的偏移量都为零。d.x,d.y和d.s.x的起始地址都相同,共享内存空间,给任意一个变量赋值,其他两个变量也会赋相同的值
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值