gpt4 book ai didi

c++ - argv 上的 const char * 与 const char **

转载 作者:行者123 更新时间:2023-11-30 00:44:06 35 4
gpt4 key购买 nike

我想从命令行参数中获取文件名,以便将其传递给文件打开函数,但是,argv[] 默认情况下似乎是 const char ** 类型,即使它被定义为“const char * argv[]"在 main 的参数中。我的函数需要 const char *,有没有办法将这两者转换,或者什么?

int main(int argc, const char *argv[]) {
memory Memory;
Memory.loadROM(argv); // Error 'argument of type "const char **" is incompatible with parameter of type "const char *"'
}

最佳答案

当在函数参数中使用而不是引用类型时,const char *argv[]const char **argv 完全相同因为前者会根据后者进行调整。

根据 N4296,第 8.3.5p5 节:

any parameter of type “array of T” or “function returning T” is adjusted to be “pointer to T” or “pointer to function returning T,” respectively

因此 const char *argv[] 是“const char * 类型的数组”,因此调整为“指向 const char *< 的指针”/”。

因为 argvconst char ** 类型,你想取消引用它以获得 const char *:

Memory.loadROM(argv[1])

关于c++ - argv 上的 const char * 与 const char **,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402143/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com