当我尝试编译此代码时,出现错误:
#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/