开发者社区> 问答> 正文

C语言字符指针(字符串)为什么不可以直接像数组那样赋值呢?

C语言字符指针(字符串)为什么不可以直接像数组那样赋值呢?

展开
收起
游客4ztx2pti3xtdw 2022-03-29 20:57:39 676 0
1 条回答
写回答
取消 提交回答
  • 注意初始化和赋值是不同的。

    {'a', 'b', 'c'} 这东西不是表达式,没有类型,只能用来初始化数组或结构体。

    而数组可以隐式转换成指向其首元素的指针右值,该值能初始化或复制给指针对象。

    另外 C 字符串指的是以零值字符结尾的连续字符对象序列,并不是字符指针,只是可以通过字符指针处理字符串。

    C 语言可以写 char *p = (char[]){'a', 'b', 'c'}; 也可以用在赋值里。

    右边的东西是复合字面量,是左值。生存期为当前块(函数内部)或整个程序执行期(函数外部)。这段声明的作用是创建一个无名数组,再由它隐式转换出来的指针值初始化指针对象 p ,和题目上的写法相比少声明了一个标识符。

    2022-03-29 20:58:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载