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。