每日一练—C++专项练习 7.18

1、结构化程序设计所规定的三种基本控制结构是顺序、选择、输出。请问这句话对吗()

错误。三种基本控制结构是顺序,选择,循环。

2、int (*p)[6];它的含义是()

A、具有6个元素的一维数组

B、定义了一个指向具有6个元素的一维数组的指针变量

C、指向整型指针变量

D、指向6个整数中的一个的地址

选B。A int p[6];  C int p; 

int (*p)[6]; //数组指针,定义了一个指向具有6个元素的数组的指针。

int *p[6]; //指针数组,定义了一个包含6个元素的数组,其中每个元素都是指向int的指针。

3、指针就是地址,因此一个变量的指针就是该变量的地址。请问这句话的说法是正确的吗?

正确

正确答案是错误。指针是一种类型,存放地址的,一个变量的指针是存放地址的变量,不是地址的概念。

4、一个32位的机器,该机器的指针是多少字节?

A、2   B、4  C、8  D、不确定

答:32位/8=4字节,所以选择B

5、int *const ptr;下面哪种说法是正确的()

A、ptr不可修改,*ptr可修改

B、ptr不可修改,*ptr不可修改

C、ptr可修改,*ptr不可修改

D、ptr可修改,*ptr可修改

int *const ptr含义是:创建一个整型指针,该指针被const声明,不能修改。所以*ptr可以修改,ptr不可以修改。

俗话说,近水楼台先得月。const后面靠近的谁谁就不能修改。

6、如果downcast是安全的(也就是,如果基类指针或者引用确实指向一个派生类对象)这个运算符会传回适当转型过的指针。如果downcast不安全,这个运算符就会传回空指针(也就是说,基类指针或者引用没有指向一个派生类对象)。这个是指C++里的()

A、dynamic_cast

B、reinterpret_cast

C、static_cast

D、const_cast

这些运算符都属于强制类型转换的符号。我觉得选A,自动转换。

7、下面叙述错误的是()

char acX[]="abc";
char acY[]={'a','b','c'};
char *szX="abc";
char *szY="abc";

A、acX与acY的内容可以修改

正确,变量当然可以修改

B、szX与szY指向相同的地址

不正确,他们指向不同的地址,但是地址指向的内容是一样的,注意区分。

C、acX占用的内存空间比acY占用的大

正确,acX占用4个sizeof(char),acY占用3个sizeof(char)

D、szX的内容修改后,szY的内容也会被更改

错误,和B一样。

8、关于C语言中volatile关键字,下面的说法哪一个是错误的?

A、编译器会禁止对volatile修饰的变量进行读写优化

B、用volatile修饰的变量,读写速度会更快

C、每一次读取volatile修饰的变量都会从内存中读取

因为每次都从内存读取,读写速度就会变慢。volatile轻快的意思,通过修饰,能将变量优化,加快读取速度。

看题,错误的。。。

9、对于下面代码,说法正确的是()

char* s1 = "Hello world";
char s2[] = "Hello world";
s1[2] = 'E';     // 1
s2[2] = 'E';     // 2
*(s1 + 2) = 'E';  // 3
*(s2 + 2) = 'E';  // 4

不太清楚

感觉这里有很多坑啊,需要填填!和前面的题7有异曲同工之妙。

10、有函数定义

void test(int a){} 
void test(float a){} 

则下列调用错误的是:

A、test(1);

B、test('c');

C、test(2+'d');

D、test(0.5);

重载函数,其中B错误,因为传入的是char类型,不符合形参要求。对于C来说,英文2+‘d’=2+ascii(d),所以属于int类型,所以可以。

应该选D。

猜你喜欢

转载自blog.csdn.net/weixin_42095973/article/details/81094773