c++ - C++中Main函数的参数

标签 c++

当我尝试编译此代码时,出现错误:

#include<iostream>
using namespace std;

int main()
{
    char* p = "Hello";
    return 0;
}

error C2440: 'initializing': cannot convert from 'const char [6]' to 'char *'

当我在 p 的声明中添加单词 const 时,此错误得到修复。

此代码编译并运行:

#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[])

最佳答案

"Hello" 是一个字符串文字,其类型为 const char[6]。您无法设置非常量 char* 指针来指向 const char[],因此会出现错误。这样做将授予调用者更改只读数据的权限。

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

关于c++ - C++中Main函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71963142/

相关文章:

c++ - 在 C++ 中使用命名空间?

c++ - const char [22 ]' to ' LPCWSTR'

c++ - 将结构化数据类型从 Fortran 传递到 C++

c++ - 线程池理解问题

c++ - 如何在运行时将字符串转换为自身的引用版本?

c++ - 如何比较二维空间中的两点

c++ - 在 C++ 代码中使用 C 定义的结构

c++ - QtCreator 2.7.2 (Windows) 控制台应用程序 : How to paste into console?

c++ - Labview DLL导入

c++ - std::tuple 参数中的类型顺序有什么影响吗?