gpt4 book ai didi

"address of"字符指针数组的正确 C 语法?

转载 作者:行者123 更新时间:2023-12-04 11:23:49 25 4
gpt4 key购买 nike

我需要将字符指针数组的地址传递给函数,正确的函数声明/原型(prototype)语法是什么?

我试过:

    void myFunc(char &*a[]);

但是得到一个预期的; , 或 ) 在 & 错误之前。

我也试过:

    void myFunc(char **a);

因为我要传入的指针确实是指向指针的指针,但我又遇到了另一个错误。这次错误与:expected char **, but got char *[]

或者类似的东西。从那以后,我尝试了其他解决方案,所以我不记得确切的错误。

有什么建议吗?

最佳答案

假设你有一个声明为

的数组
char *a[N];

并且您想传递一个指向数组的指针,如

foo( &a );

那么foo的原型(prototype)需要是

void foo( char *(*aptr)[N] );

请注意,在这种情况下,必须声明数组的大小;指向 N 元素数组的指针与指向 M 元素数组的指针是不同的类型。

通常,您不想这样做;相反,您通常会像这样传递数组表达式:

foo ( a );

对应的原型(prototype)是:

void foo ( char **aptr );

除非它是 sizeof 或一元 & 运算符的操作数,或者是用于在声明中初始化另一个数组的字符串文字,类型的表达式“T 的 N 元素数组”将被转换(“衰减”)为“指向T 的指针”类型的表达式,表达式的值将是数组第一个元素的地址。

关于 "address of"字符指针数组的正确 C 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19123340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com