加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 从char **到const char **的隐式转换

发布时间:2020-12-16 09:13:49 所属栏目:百科 来源:网络整理
导读:为什么我的编译器(GCC)没有从char **隐式转换为const char **? 以下代码: #include iostreamvoid print(const char** thing) { std::cout thing[0] std::endl;}int main(int argc,char** argv) { print(argv);} 给出以下错误: oi.cpp: In function ‘int
为什么我的编译器(GCC)没有从char **隐式转换为const char **?

以下代码:

#include <iostream>

void print(const char** thing) {
    std::cout << thing[0] << std::endl;
}

int main(int argc,char** argv) {
    print(argv);
}

给出以下错误:

oi.cpp: In function ‘int main(int,char**)’:
oi.cpp:8:12: error: invalid conversion from ‘char**’ to ‘const char**’ [-fpermissive]
oi.cpp:3:6: error:   initializing argument 1 of ‘void print(const char**)’ [-fpermissive]

解决方法

这样的转换将允许您将const char *放入char *数组中,这将是不安全的.在印刷中你可以这样做:

thing[0] = "abc";

现在argv [0]将指向一个无法修改的字符串文字,而main期望它是非const(char *).因此,对于类型安全,不允许进行此转换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读