首页 > 试题广场 >

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

[问答题]

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

const char * arr = "123";

char * brr = "123";

const char crr[] = "123";

char drr[] = "123";

1. 声明指向串“123”的一个常量字符指针
2. 编译错误,“123”是const char* 类型的指针,不能用来初始化char* 指针
3. 初始化一个常量字符数组,相当于const char crr1[4] = { '1','2','3' };  (要特别注意字符数组的长度)
既然是常量数组,那么再对它执行下列操作就是错误的了
   crr[4] = "12";   (表达式必须是可以被修改的左值)
4. 声明一个指向“123”的字符数组:
举例说明一些问题:

    char * ptr;  drr = ptr;      // 错误,drr是不可以被修改的值
    drr [5]= (char)"1234";    // 正确,将“1234”  const char * 类型强制转化为char类型
    drr[5] = "1234";     // 不能将const char *类型分配到char类型的 实体上

发表于 2019-03-19 16:55:59 回复(0)