《基础知识——代码相关》

  • 有段代码写成了下边这样,如果在只修改一个字符的前提下,使代码输出20个hello?

for(int i = 0; i < 20; i--)
    cout << "hello" << endl;

【答案】:

for(int i = 0; i + 20; i--)
    cout << "hello" << endl;
  • 以下四行代码的区别是什么?

const char * arr = "123"; 
char * brr = "123"; 
const char crr[] = "123"; 
char drr[] = "123";

【答案】:

const char * arr = "123";
//字符串123保存在常量区,const本来是修饰arr指向的值不能通过arr去修改,但是字符串“123”在常量区,本来就不能改变,所以加不加const效果都一样

char * brr = "123";
//字符串123保存在常量区,这个arr指针指向的是同一个位置,同样不能通过brr去修改"123"的值

const char crr[] = "123";
//这里123本来是在栈上的,但是编译器可能会做某些优化,将其放到常量区

char drr[] = "123";
//字符串123保存在栈区,可以通过drr去修改

 

你可能感兴趣的:(C++面试宝典,《C++高频面试题》)