社区
C++ 语言
帖子详情
求助:char **转为const char **!
knpingan
2009-12-02 11:33:45
定义一个数组:
char *params[MAX_PARAMS_LEN];
经过对params的计算后,
需要传递给函数 f(const char *params[])。
我在VC6.0下这样使用:
f (¶ms[0])
编译无法通过:不能将从“char **”转换为“const char *[]”
在f(const char *params[])的定义不改变的情况下,
请教如何对params进行转换已达到上述目的。
谢谢!
...全文
249
13
打赏
收藏
求助:char **转为const char **!
定义一个数组: char *params[MAX_PARAMS_LEN]; 经过对params的计算后, 需要传递给函数 f(const char *params[])。 我在VC6.0下这样使用: f (¶ms[0]) 编译无法通过:不能将从“char **”转换为“const char *[]” 在f(const char *params[])的定义不改变的情况下, 请教如何对params进行转换已达到上述目的。 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sduxiaoxiang
2009-12-02
打赏
举报
回复
const cast
codebm
2009-12-02
打赏
举报
回复
强制转换喽``(const char **)params
shiweifu
2009-12-02
打赏
举报
回复
强制转换吧
kingpin1cn
2009-12-02
打赏
举报
回复
use "const cast" or "const char &"
Julykey
2009-12-02
打赏
举报
回复
貌似数组的要求比一般类型要严格呀
zhangshuai09
2009-12-02
打赏
举报
回复
你可以稍微把f的声明改一下,下面这种方法应该没有破坏你最初的想法吧
f(const char * const a[])
或
f(const char * const * a)
macrojj
2009-12-02
打赏
举报
回复
[Quote=引用 3 楼 knpingan 的回复:]
暂时找个一个很笨的方法:
char ** tp1 = ¶ms[0];
const char **temp;
temp = (const char **)tp1;
然后把temp传递给函数f。
[/Quote]
也只好这样了
sduxiaoxiang
2009-12-02
打赏
举报
回复
那就强制转换
飞天御剑流
2009-12-02
打赏
举报
回复
f( ( const char** )params );
hai040
2009-12-02
打赏
举报
回复
直接传params不行?
ztenv
版主
2009-12-02
打赏
举报
回复
这样也没有什么不好吧?
knpingan
2009-12-02
打赏
举报
回复
暂时找个一个很笨的方法:
char ** tp1 = ¶ms[0];
const char **temp;
temp = (const char **)tp1;
然后把temp传递给函数f。
knpingan
2009-12-02
打赏
举报
回复
[Quote=引用 1 楼 sduxiaoxiang 的回复:]
const cast
[/Quote]
谢谢提供参考。
但是const case是用于去除const的,比如从const char *转为char *;
这个与我描述的相反了。
我想要的是“char **”转换为“const char *[]”
还是搞不定,望达人指点。
细谈
const
char
** 与
char
** 的区别
本文通过示例代码详细分析了
const
char
**与
char
**在C++中的差异,探讨了指针类型的
const
修饰规则,指出
const
char
**并非
char
**的
const
形式,并在函数传参中展示了这种差异可能导致的编译错误。
const
char
**与
char
** 的传参问题
探讨了C++中
const
限定符对指针的影响,解释了为何
const
char
**与
char
**无法直接转换,并引用ANSIC标准说明参数传递的规则。
C语言中的
const
char
,C语言中为什么不能把
char
**赋给
const
char
**
C语言中,
char
**和
const
char
**是两个不相容的类型,不能直接赋值。虽然可以将
char
*赋给
const
char
*,因为它们所指的类型是相容的,但
char
**和
const
char
**之间的赋值不合法,因为它们都是未限定的指针,分别指向不相容的类型
char
*和
const
char
*。
[C++] 为什么
const
char
**形参不能接收
char
**类型的实参?
本文探讨了在C++中,
const
char
**形参为何不能接受
char
**类型的实参。根据C++标准,赋值操作必须满足两操作数类型相容且左侧指针具有右侧的所有限定符。
const
char
**和
char
**之间的转换不满足这一条件,导致赋值错误。分析了
const
在指针和引用参数中的作用,以及
const
形参的优势,包括保护实参不被意外修改和在某些情况下创建临时变量。
关于
char
const
**p、
char
*
const
*p、
char
**
const
p的区别
本文详细解析了C++中指针与
const
结合的三种常见类型:
char
const
**p、
char
*
const
*p、
char
**
const
p的区别,通过实例说明了如何正确理解和使用这些类型,避免编程中的常见错误。
C++ 语言
65,212
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章