社区
C++ 语言
帖子详情
const的疑问
csucdl
2005-09-29 03:58:45
const char* Search(const char **Sourcestring, const char *key, const int &num);
这个函数的参数Sourcestring该传递怎样的实参
我这样作
char *source[] = {"ab", "ac", "ad", "ae"};
然后将source作为实参
但是编译通不过,报错为不能将char*[] 转换为const char**
请教一下
...全文
209
6
打赏
收藏
const的疑问
const char* Search(const char **Sourcestring, const char *key, const int &num); 这个函数的参数Sourcestring该传递怎样的实参 我这样作 char *source[] = {"ab", "ac", "ad", "ae"}; 然后将source作为实参 但是编译通不过,报错为不能将char*[] 转换为const char** 请教一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yhbttfile
2005-09-29
打赏
举报
回复
这里可能的原因是,你调用函数的时候,编译器需要做两次转换。C++在做隐式转换的过程中,不允许出现隐式转换两次。
如:
void f(const char **) // 1
{
}
int main()
{
char *source[] = {"ab", "ac", "ad", "ae"}; // 2
f(source); // 3
}
“3”处,如果要把char *[4]转换为“const char **”,首先要把char []隐式转换为char *,然后再把char *转换为const char *。这里已经超越了C++的转换次数的限制。
可以使用你愿意的方法来消除这样的转换次数。
如:
把“1”处修改为:void f(char **)
或者
把“2”处修改为:const char *source[] = {"ab", "ac", "ad", "ae"};
或者做如下修改:
void f(char * const *)
{
}
int main()
{
char **source = new char *[10];
f(source);
}
第三种修改方法比较有意思,呵呵,考虑一下吧。
csucdl
2005-09-29
打赏
举报
回复
这里加上const 其什么作用,为什么要加上
一元指针不用的啊
csucdl
2005-09-29
打赏
举报
回复
megaboy
2005-09-29
打赏
举报
回复
你用的什么编译器啊?BC与VC都可以通过的。
runall
2005-09-29
打赏
举报
回复
const char *source[] = {"ab", "ac", "ad", "ae"};
NetsEagle
2005-09-29
打赏
举报
回复
char *source[] = {"ab", "ac", "ad", "ae"};
============================
加上const
const char *source[] = {"ab", "ac", "ad", "ae"};
另外:const char* Search(const char **Sourcestring, const char *key, const int &num);
const int &num //这里没有这个必要吧,有点看不懂想干什么?去掉const返回索引?
关于
const
的
疑问
本文深入探讨C与C++中
const
关键字的区别与应用,解析
const
在两种语言中的行为差异,包括变量与常量的定义、存储位置及运行时的可修改性,以及C++如何增强
const
的功能。
关于
const
对象的
疑问
本文详细解析了C++中
const
关键字的应用,包括如何使用
const
修饰类的对象,以及
const
成员函数的特点和限制。通过实例展示了
const
对象只能调用
const
成员函数,且
const
成员函数不能修改成员变量。
const
疑问
本文探讨了C++中使用常量指针修改内存值的现象及其与C语言的区别,并通过实例代码展示了解释这一现象的原因。
关于
const
_cast的
疑问
本文详细解析了C++中
const
_cast转换的概念、原理及应用实例,特别是引用转换部分的疑惑解答。
typedef 与
const
的一些
疑问
本文通过一个具体的示例详细解析了C/C++中typedef的作用及使用方法,并解释了它与宏定义的区别。通过将typedef定义的类型视为一种新的类型,文章说明了如何利用typedef来简化复杂的类型声明。
C++ 语言
65,210
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章