C 指令说明
任何人都可以解释以下说明:
int *c[10];
char *(**n)(void);
float *(**r(void))[6];
short *(**v(void))(int);
long *(*(*(*z)(void))[7])(void);
can any one explain the following instructions:
int *c[10];
char *(**n)(void);
float *(**r(void))[6];
short *(**v(void))(int);
long *(*(*(*z)(void))[7])(void);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
http://www.cdecl.org/ 将解释所有这些陈述。 C 右左规则 解释了如何很好地阅读 C 的减法。还有大量其他可用资源,尤其是此问题。
http://www.cdecl.org/ will explain all these statements. C Right-Left rule explains how to read C declerations pretty well. There are plenty of other resources available, notably in this question.
因为这是你的作业,你不会通过我告诉你一切来学到这一点;)但是,有一个提示。您可以创建并将指针传递给 C 中的函数,而不仅仅是变量。
除第一个示例之外的所有函数参数都是函数指针的原型。
假设我们有一个用于测试颜色的库,我们可能希望允许库的用户提供获取颜色名称的自定义方法。我们可以定义一个结构体,供用户传入,其中包含我们可以调用的回调。
然后,该库的用户可以自由定义这些回调函数的实现,并将它们作为函数指针传递给我们。
我让你去弄清楚那些带有额外数量的 * 的情况是怎么回事。
Since this is your homework you won't learn this by me telling you everything ;) But, one hint. You can create and pass pointers to functions in C, not just variables.
Function arguments of all but the first example are prototypes for function pointers.
Say we have a library for testing colours, we might want to allow the users of our library to provide custom ways of getting the name of the colour. We might define a struct for users to pass in containing callbacks we can call.
Users of the library would then be free to define implementations of these callback functions and pass them to us as a function pointer.
I've leave you to work out what is going on with the ones with extra numbers of *s.