首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"address of“字符指针数组的C语法正确吗?

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

Stack Overflow用户
提问于 2013-10-02 02:30:06
回答 6查看 236关注 0票数 2

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

我试过了:

代码语言:javascript
运行
复制
    void myFunc(char &*a[]);

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

我也试过了:

代码语言:javascript
运行
复制
    void myFunc(char **a);

因为我要传递的指针确实是一个指向指针的指针,但是我得到了另一个错误。这一次的错误与:预期的char **,但得到的char *[]有关

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

有什么建议吗?

EN

Stack Overflow用户

发布于 2013-10-02 03:37:11

假设您有一个数组声明为

代码语言:javascript
运行
复制
char *a[N];

并希望传递一个指向数组的指针,如下所示

代码语言:javascript
运行
复制
foo( &a );

那么foo的原型需要是

代码语言:javascript
运行
复制
void foo( char *(*aptr)[N] );

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

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

代码语言:javascript
运行
复制
foo ( a );

相应的原型是:

代码语言:javascript
运行
复制
void foo ( char **aptr );

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

票数 4
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19123340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档