用const char *对象来初始化字符型指针/字符型数组

const char *类型的对象(即指向字符型字面值常量的指针)可以用来初始化字符型数组(char []),但不能初始化字符型指针(char *),下图所示:

const char *初始化字符型指针(报错)

用字符型字面值常量来初始化字符型指针
报错

const char *初始化字符型数组(符合)

可以初始化字符型数组

个人理解和疑惑

 先说一下有关初始化的知识点。首先初始化不同于赋值(见c++primer),对于编译器来说这两个是完全不同的概念。赋值是指擦除原变量所在内存的内容,然后把新内容写上。至于初始化,即代表着定义(definition),任何对象不能重复定义,且特殊修饰符(如const、引用符&等)修饰的对象一定要在声明时就初始化。
const char *类型的对象不能用来初始化字符型指针我是理解的,因为初始化的前提(除了引用的初始化)是左右类型完全相同。但是问题来了,字符型数组为什么可以?字符型数组在初始化时,其数据类型实质是怎么样的?希望大伙来解答一下,还有纠错 。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值