• <bdo id='8qKKA'></bdo><ul id='8qKKA'></ul>
    1. <small id='8qKKA'></small><noframes id='8qKKA'>

    2. <tfoot id='8qKKA'></tfoot>
    3. <i id='8qKKA'><tr id='8qKKA'><dt id='8qKKA'><q id='8qKKA'><span id='8qKKA'><b id='8qKKA'><form id='8qKKA'><ins id='8qKKA'></ins><ul id='8qKKA'></ul><sub id='8qKKA'></sub></form><legend id='8qKKA'></legend><bdo id='8qKKA'><pre id='8qKKA'><center id='8qKKA'></center></pre></bdo></b><th id='8qKKA'></th></span></q></dt></tr></i><div id='8qKKA'><tfoot id='8qKKA'></tfoot><dl id='8qKKA'><fieldset id='8qKKA'></fieldset></dl></div>
      <legend id='8qKKA'><style id='8qKKA'><dir id='8qKKA'><q id='8qKKA'></q></dir></style></legend>

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

      时间:2023-09-19
        <bdo id='RatwD'></bdo><ul id='RatwD'></ul>
            <tbody id='RatwD'></tbody>
            • <i id='RatwD'><tr id='RatwD'><dt id='RatwD'><q id='RatwD'><span id='RatwD'><b id='RatwD'><form id='RatwD'><ins id='RatwD'></ins><ul id='RatwD'></ul><sub id='RatwD'></sub></form><legend id='RatwD'></legend><bdo id='RatwD'><pre id='RatwD'><center id='RatwD'></center></pre></bdo></b><th id='RatwD'></th></span></q></dt></tr></i><div id='RatwD'><tfoot id='RatwD'></tfoot><dl id='RatwD'><fieldset id='RatwD'></fieldset></dl></div>

              1. <legend id='RatwD'><style id='RatwD'><dir id='RatwD'><q id='RatwD'></q></dir></style></legend>
                <tfoot id='RatwD'></tfoot>

                <small id='RatwD'></small><noframes id='RatwD'>

                本文介绍了从 char** 到 const char** 的隐式转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                为什么我的编译器 (GCC) 不会从 char** 隐式转换为 const char**?

                Why my compiler(GCC) doesnt implicitly cast from char** to 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* 数组中,这将是不安全的.在 print 你可以这样做:

                Such a conversion would allow you to put a const char* into your array of char*, which would be unsafe. In print you could do:

                thing[0] = "abc";
                

                现在 argv[0] 将指向一个无法修改的字符串文字,而 main 期望它是非常量的 (char*代码>).所以为了类型安全,这种转换是不允许的.

                Now argv[0] would point to a string literal that cannot be modified, while main expects it to be non-const (char*). So for type safety this conversion is not allowed.

                这篇关于从 char** 到 const char** 的隐式转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:对 `__stack_chk_fail' 的未定义引用 下一篇:GCC、字符串化和内联 GLSL?

                相关文章

                最新文章

                1. <legend id='w7qAo'><style id='w7qAo'><dir id='w7qAo'><q id='w7qAo'></q></dir></style></legend>
                2. <small id='w7qAo'></small><noframes id='w7qAo'>

                  <tfoot id='w7qAo'></tfoot>
                  <i id='w7qAo'><tr id='w7qAo'><dt id='w7qAo'><q id='w7qAo'><span id='w7qAo'><b id='w7qAo'><form id='w7qAo'><ins id='w7qAo'></ins><ul id='w7qAo'></ul><sub id='w7qAo'></sub></form><legend id='w7qAo'></legend><bdo id='w7qAo'><pre id='w7qAo'><center id='w7qAo'></center></pre></bdo></b><th id='w7qAo'></th></span></q></dt></tr></i><div id='w7qAo'><tfoot id='w7qAo'></tfoot><dl id='w7qAo'><fieldset id='w7qAo'></fieldset></dl></div>

                    <bdo id='w7qAo'></bdo><ul id='w7qAo'></ul>