164

问答题 164 /290

以下四行代码的区别是什么?

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去修改