是否可以将char **作为参数传递

Is it possible to pass a char** as a parameter

本文关键字:参数传递 char 是否      更新时间:2023-10-16

声明: Menu(const char* header_, const char* footer_, const char** options_);

定义:Menu menu(header, footer, (char**){"Option A", "Option B", "Option C", NULL});

它们的数组用红色下划线。

可以将char **作为参数

传递

是。

您的代码被下划线的原因是(可能(,因为此代码是如此丑陋/不安全,以至于开发人员在您的IDE中添加了特殊处理,以标记此类代码。

如果是旧代码,对不起。

如果是您的代码(或者只有可以更改(,请考虑:

  • const std::vector<std::string>&替换const char**参数(以这种方式您将少有很多问题(。

  • 用const引用到std ::字符串实例,替换其他参数,或者如果更好地适合您的方案。

  • 用nullptr替换null(不要在新代码中使用null(。

  • 不使用C 代码中的C风格铸件。

  • 不使用参数名称的尾随下划线。

#include <array>
Menu menu(header, footer, ::std::array< char const *, 4 >{"foo", "bar", "foobar", nullptr}.data());