如何获取数组指针?

Posted

技术标签:

【中文标题】如何获取数组指针?【英文标题】: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 但是怎么做呢?还是没有办法传递这些参数? 【参考方案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】:

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

【讨论】:

以上是关于如何获取数组指针?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过指针获取数组的大小? [复制]

如何获取python的多处理数组'指针并将其传递给Cpp程序?

qt如何获取主窗口的指针

从包含地址字符串元素的指针数组的指针数组中获取字符串元素的地址

gdb - 如何查看指针数组的内容?

通过从本地 C 样式数组返回指针来获取悬空指针