代码之家  ›  专栏  ›  技术社区  ›  f877576

C++中主要函数的参数

c++
  •  1
  • f877576  · 技术社区  · 4 年前

    当我试图编译这段代码时,出现了一个错误:

    #include<iostream>
    using namespace std;
    
    int main()
    {
        char* p = "Hello";
        return 0;
    }
    

    错误C2440:“正在初始化”:无法从“常量字符[6]”转换为“字符*”

    当我添加单词时,这个错误被修复了 const 在 p .

    此代码编译并运行:

    #include<iostream>
    using namespace std;
    
    int main()
    {
        const char* p = "Hello";
        return 0;
    }
    

    所以我的问题是:现在的情况如何 main() 能承受的功能 char *argv[] (作为参数)而不是 const char *argv[] (作为参数)?

    int main (int argc, char *argv[])

    1 回复  |  直到 4 年前
        1
  •  3
  •   Remy Lebeau    4 年前

    "Hello" 是字符串文字,其类型为 const char[6] .不能设置非常量 char* 指向某一点的指针 const char[] ,这是一个错误。这样做将授予调用方访问可变只读数据的权限。

    这个 炭* 中的指针 argv[] 参数 main() 你指的是 char[] 当程序的启动代码在调用前解析调用进程的命令行参数时,在运行时动态分配和填充的数组 main() 。它们不指向字符串文本,因此不需要 const char* .