C语言字符指针(字符串)为什么不可以直接像数组那样赋值呢?
注意初始化和赋值是不同的。
{'a', 'b', 'c'} 这东西不是表达式,没有类型,只能用来初始化数组或结构体。
而数组可以隐式转换成指向其首元素的指针右值,该值能初始化或复制给指针对象。
另外 C 字符串指的是以零值字符结尾的连续字符对象序列,并不是字符指针,只是可以通过字符指针处理字符串。
C 语言可以写 char *p = (char[]){'a', 'b', 'c'}; 也可以用在赋值里。
右边的东西是复合字面量,是左值。生存期为当前块(函数内部)或整个程序执行期(函数外部)。这段声明的作用是创建一个无名数组,再由它隐式转换出来的指针值初始化指针对象 p ,和题目上的写法相比少声明了一个标识符。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。