关于const的用法.

DanielWYO 2003-09-29 09:26:50
[C++ Error] form_main.cpp(273): E2034 Cannot convert 'char * *' to 'const char * *'

如果是const char**转成char**错误那还说的过去. 为什么char**转成const char**会出错啊??

以上错误在BCB中出现.
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
windyguy 2003-09-29
  • 打赏
  • 举报
回复
ft,不好意思,是七猫兄:)
windyguy 2003-09-29
  • 打赏
  • 举报
回复
七猫熊,就是这个意思嘛,指向类型不同不能赋值的。
void func(const char **c){};
void main(int argc,char** argv){ func(argv);} //错误!
sevencat 2003-09-29
  • 打赏
  • 举报
回复
更正:
const char **=constcharptr*;
sevencat 2003-09-29
  • 打赏
  • 举报
回复
typedef char* charptr;
typedef const char* constcharptr;

char **=charptr*;
const char **=constcharptr;
???is that so ?
windyguy 2003-09-29
  • 打赏
  • 举报
回复
Expert C里面有详细描述这个问题,如果是const char * p;char * q;
那么p=q是可以的,但是q=p不可能,因为被赋值的指针必须和赋值指针指向的类型相同,并且被赋值*拥有赋值*的所有限定符。
对于const char **,它的意思是一个指针,指向一个有const修饰的char*指针,但是char **,是一个指针,指向一个char*指针,两个指针指向的类型并不同,不能赋值!
而const char *和char *指向的都是char,类型相同。

你可以看看Expert C这本很经典的书,或者去看C标准手册。
sevencat 2003-09-29
  • 打赏
  • 举报
回复
up,不知道。
csdn5211 2003-09-29
  • 打赏
  • 举报
回复
还是把代码贴上来吧。
hcj2002 2003-09-29
  • 打赏
  • 举报
回复
char * * 是一个指向字符指针的指针,把一个指针类型类型定义为常量,如果char**没有赋处置的话就回有错。
csdn5211 2003-09-29
  • 打赏
  • 举报
回复
还是把代码贴上来吧!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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