error C2440: “=”: 无法从“const char [2]”转换为“char”

gucheng789 2010-11-21 11:20:18
代码如下:
char *cd=new char[10];
cd[0]="d"; //1
cd="d"; //2
简单描述一下吧,语句2没有问题,可以通过编译,但语句1就不行,提示出错信息为:

error C2440: “=”: 无法从“const char [2]”转换为“char”

不晓得什么意思,在网上找了好多资料,还是 搞不懂,
只有发帖求救了,哪位大虾熟悉的解释一下啊????
哦,对了,我用的是VS2008,定义的字符集为unicode。
...全文
1852 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
matrixcl 2010-11-23
  • 打赏
  • 举报
回复
语句2也有问题,内存泄露了,new的内存指针没有保存,cd又指向其他地方了。

语句1,cd[0]是char类型,"d"是字符串类型, 不匹配.
cd[0]='d'就行了
zhanghengsdnu 2010-11-23
  • 打赏
  • 举报
回复
"" 常量字符串啊,后面默认还有个结束符。注意常量字符串是默认是static存储的。
yellowtree12 2010-11-22
  • 打赏
  • 举报
回复
大家已经给出正解了,,路过的。
zk_sima 2010-11-22
  • 打赏
  • 举报
回复
c语言啊,强烈建议楼主把C学好了再看其他的
游牧小小诗人 2010-11-22
  • 打赏
  • 举报
回复
大家已经给出正解了,,路过的。
cranium 2010-11-22
  • 打赏
  • 举报
回复
你已经将类型定义为char了,就是指的单字节字符,TCHAR这种宏才会随工程设置而对应不同的字符类型。

yaoli126126 2010-11-22
  • 打赏
  • 举报
回复
""是字符串,应该用''表示字符
辰岡墨竹 2010-11-22
  • 打赏
  • 举报
回复
"d"实际上是const char的数组,一个d、一个\0,当然不能转换为char了(cd[]已经指定是字符数组的一个元素)。
而且你不能将cd直接修改另外一个静态字符串。那样的话你分配的10字节内存就失去指针,不能delete释放掉了。应该用strcpy将字符串拷贝到cd里
大大啊 2010-11-22
  • 打赏
  • 举报
回复
字符 和 字符串 你要搞清楚
gucheng789 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 bokutake 的回复:]
"d"实际上是const char的数组,一个d、一个\0,当然不能转换为char了(cd[]已经指定是字符数组的一个元素)。
而且你不能将cd直接修改另外一个静态字符串。那样的话你分配的10字节内存就失去指针,不能delete释放掉了。应该用strcpy将字符串拷贝到cd里
[/Quote]
char *cd=new char[10];
cd="abcd";

我不明白,这样写为什么不可以,不就是个字符串赋值吗,
难道strcpy函数里是一个字符一个字符赋值给cd[0...10]???
harleypang 2010-11-22
  • 打赏
  • 举报
回复
楼上说的都很对
libinfei8848 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cwbcwb505 的回复:]

兄弟,其实我觉得你的第二句也有问题
1、"d" 是静态数据区的字符串,你用cd指向他会造成内存泄露的
2、静态数据区的字符串是不能修改的,如果你接下来用*p = 'x' 或是strcpy()之类的东西,程序可能会崩溃
[/Quote]
楼上说的对
cwbcwb505 2010-11-22
  • 打赏
  • 举报
回复
兄弟,其实我觉得你的第二句也有问题
1、"d" 是静态数据区的字符串,你用cd指向他会造成内存泄露的
2、静态数据区的字符串是不能修改的,如果你接下来用*p = 'x' 或是strcpy()之类的东西,程序可能会崩溃
luciferisnotsatan 2010-11-22
  • 打赏
  • 举报
回复
用单引号
单引号表示 字符
双引号表示 字符串 你这里就是两字符:d和结尾符 \0
Metrosexual 2010-11-22
  • 打赏
  • 举报
回复
字符数组的赋值,大家都说了,接分
  • 打赏
  • 举报
回复
请楼主认真理解:字符,字符串,字符串常量,字符数组,字符指针;

把这几个搞清楚!
szgrape 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gules 的回复:]
"d" ==> 'd'
[/Quote]

来接分了
liutengfeigo 2010-11-21
  • 打赏
  • 举报
回复
一开始是这样,慢慢来。仔细看书,认真想想
gules 2010-11-21
  • 打赏
  • 举报
回复
"d" ==> 'd'
Csuxiaowu 2010-11-21
  • 打赏
  • 举报
回复
你的是双引号哎

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧