【问题标题】:How to get pointer on array?如何获取数组指针?
【发布时间】:2020-07-13 14:03:46
【问题描述】:

我有这样一个数组:

    const char arg_arr[][100] = {
        "a",
        "b",
        "c",
        "d",
    };

然后我就有这样的方法ParseCmdLine(const char *argv[]);

所以,为了传递我的arg_arr,我需要获取指向它的指针。

我尝试以ParseCmdLine(*arg_arr) 或类似ParseCmdLine(&arg_arr) 的方式调用此方法,但它不起作用。

问题是 - 如何将这个 arr 作为指针传递?

【问题讨论】:

  • const char arg_arr[][100]const char *argv[] 类型不兼容。您不能将前者转换为后者;你需要重写前者。
  • const char arg_arr[][100]const char *argv[] 不同。 char [][100] 是一个包含 100 个字符的数组。 const char *argv[] 是一个指向 const char 的 指针 数组。
  • 试试void ParseCmdLine(const char (*argv)[100]) {}
  • @JosephSible-ReinstateMonica 但是怎么做呢?还是没有办法传递这些参数?
  • @KamilCuk 但是怎么做呢?还是没有办法传递这些参数?

标签: c++ arrays c pointers


【解决方案1】:

变化:

 const char arg_arr[][100] = {
 ...
};

收件人:

 const char *arg_arr[] = {
 ...
};

【讨论】:

  • 不强迫任何事情,只是问题中的内容。复制意大利面
  • @AlekseyTimoshchenko:注意ParseCmdLine 必须有一种方法来判断数组中有多少元素。要么将此计数作为额外参数 (argc) 传递,要么在最后一个字符串之后添加一个尾随 NULL 指针,或者像 main() 函数的参数一样,两者都这样做。
【解决方案2】:

arg_arrchar 数组的常量数组,它与ParseCmdLine 所期望的类型不同:指向常量char 数组的指针数组的指针。

你应该这样定义arg_arr

const char *arg_arr[] = {
    "a",
    "b",
    "c",
    "d",
    NULL
};

并直接作为ParseCmdLine(arg_arr)传递。

请注意,ParseCmdLine 必须有一种方法来判断数组中存在多少元素。或者将此计数作为一个额外的参数 (argc) 传递,或者在最后一个字符串之后添加一个尾随 NULL 指针,如上所示,或者像 main() 函数的参数那样两者都做。

【讨论】:

    【解决方案3】:

    如何获取数组指针?

    关于您提供的内容的可用选项(无需更改您的代码):

    数字:

    按字母顺序:

    Here's 我认为可能会有所帮助的指南。

    【讨论】:

      【解决方案4】:

      数组的名称本质上是它的第一个元素的地址

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多