【发布时间】:2021-09-09 12:52:37
【问题描述】:
我不太明白如何正确排列 const 以便将数组的常量数组传递给函数,例如字符串数组:
void f (char **strings);
int main (void)
{
char strings[][2] = { "a", "b", "c" };
f (strings);
}
你能告诉我把const放在哪里吗?据我了解,应该有两个const,上面示例中的一个应该位于char之前。
重复的可能性很大,但是我找不到类似的问题:(
【问题讨论】:
-
数组衰减为指向其第一个元素的指针,但是这种衰减不是递归的。因此,数组数组衰减为指向 arrays 的指针,而不是指向指针的指针。在您的情况下,
strings将衰减为char (*)[2]。 -
至于
const的放置位置,您必须记住,指针指向的数据可以是const,在您的情况下将是字符数组。所以要添加const,它将是char (const *)[2]。 -
您可以使用
const char *strings[] = { "a", "b", "c" };使其与void f (const char **strings);或char strings[][2] = { "a", "b", "c" };与void f (char (*strings)[2]);一起使用。 -
或者你可以让 pointer 保持不变,在这种情况下它会是
char (* const)[2],我猜这就是你真正想要的? -
@Someprogrammerdude:
char (const *)[2]不是正确的类型名称或声明。char (* const)[2]将是一个const指针,指向 2 个数组constchar。