137-牛客网C++刷题6

本文介绍了C++编程中的一些核心概念,包括:1.静态变量的作用域;2.数组元素的指针表达式;3.vector和list的区别及应用;4.类析构函数调用顺序;5.STL容器存储方式;6.const对象的成员函数访问规则;7.派生类与基类成员的可见性;8.子类型的概念与继承关系;9.void类型函数的使用限制;10.模板类的构造问题。内容涵盖了C++的基础语法、STL使用和面向对象设计。
摘要由CSDN通过智能技术生成

1.若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类型是?

A.extern
B.register
C.auto
D.static

答案:D

解析:
A.外部变量,可供所有源文件使用
B.寄存器变量,放在寄存器而非内存中,效率更高,一般是临时变量
C.自动变量,所有未加 static 关键字的都默认是 auto 变量,也就是我们的普通变量
D.静态变量,在内存中只存在一个,可供当前源文件的所有函数使用

2.下面哪个指针表达式可以用来引用数组元素a[i][j][k][l]

A.(((a+i)+j)+k)+l)
B.((((a+i)+j)+k)+l)
C.(((a+i)+j)+k+l)
D.((a+i)+j+k+l)

答案:B

解析:
a:整个四维数组的地址

*(a+i) = a[i] 
*(a+i)+j = a[i] +j
*(*(a+i)+j) = a[i][j]
*(*(a+i)+j)+k =  a[i][j]+k
*(*(*(a+i)+j)+k ) = a[i][j][k]
*(*(*(a+i)+j)+k )+l =  a[i][j][k]+l
*(*(*(*(a+i)+j)+k )+l ) = a[i][j][k][l]

3.下面有关vector和list的区别,描述错误的是?

A.vector拥有一段连续的内存空间,因此支持随机存取,如果需要高效的随即存取
B.list拥有一段不连续的内存空间,如果需要大量的插入和删除,应该使用list
C.vector::iterator支持“+”、“+=”、“<”等操作符
D.list::iterator则不支持“+”、“+=”、“<”等操作符运算,但是支持了[ ]运算符4

答案:D

解析:
vector拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝,这些都大大影响了vector的效率。
list就是数据结构,中的双向链表,因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值