如何获取数组指针?
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_arr
是char
数组的常量数组,它与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程序?