牛客网-C++-2020.9.2
1. for循环语句能够被改写成(D)语句
A. 复合 B. if C. switch D. while
解析:
for循环可以写成while控制循环的次数,同时也可以被改写成do while语句
2. 以下程序的输出结果是(you&me)。
void main () { char arr[2][4]; strcpy (arr[0],"you");strcpy (arr[1],"me"); arr[0][3]=’&’; printf("%s \n",arr); }
解析:
【解释】因为arr是一个2行4列的二维数组,每一行可以存放最多三个字符的字符串。
执行strcpy(art[0],"you”);后则将字符串"you”放置在数组arr的第一行上,即a[0][0]=’y’,
a[0][1]=’o’,a[0][2]=’u',a[0][3]=’\0’(字符串结尾符),执行strcpy(arr[1],”me”);后则将字符
串”me”放置在数组arr的第二行上,即a[1][0]=’m',a[1][1]=’e’,a[1][2]=’\0’(字符串结尾符),
由于二维数组在内存中是以行序存放的,执行arr[0][3]=’&’;后,第一行与第二行将视为
一个字符串"you&me”,而数组名则是该字符串的首地址。所以正确答案是A。
3. c++声明const int i,是在哪个阶段做到i只可读的?
答:编译
解析:const说明变量是常量,常量存储在常量区,在编译时就直接将其替换成相应的引用。
const int i = 10; 编译时候就和变量i做了对应,后面程序用到i的时候,直接从编译器的符号表中取10,不会再查找内存。在c++中 const修饰的变量是常量,分配在全局区的常量区,而我们的全局区和代码区在编译完了就已经确定,只有栈区和堆区才是运行是分配的。表示变量i是一个常变量,在编译阶段,程序后面只要出现i这个标识符都会被用10进行替换。这一点类似于宏,#define i 10.const用来说明所定义的变量是只读的。 这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。
源代码到可执行文件的过程:
源代码->预处理->编译->优化->汇编->链接->可执行文件
4. 运算符重载以后,其优先级和结合性都不能改变
解析:
void func(int *p) { static int num = 4; p = # (*p)--; } int main() { int i = 5; int *p = &i; func(p); printf("%d", *p); return 0; }