Rus*_*sel 9 c c++ arrays function-pointers declaration
它是否正确?
int (*(*ptr)())[];
Run Code Online (Sandbox Code Playgroud)
我知道这是微不足道的,但我正在看一个关于这种结构的旧测试,而这个特殊的组合并没有在测试中,它真的让我发疯; 我只需要确定一下.这些声明是否有明确而可靠的可理解规则?(即:指向......数组的指针......指向......等等的函数)谢谢!
[R
Pra*_*rav 14
左右规则使其变得简单.
int (*(*ptr)())[];
可以解释为
从变量名称开始------------------------------- ptr
没有什么是正确的,但)
所以去找*
-------------- 是一个指针
跳出括号并遇到()
----------- 到一个不带参数的函数(在C未指定参数的情况下)
向左走,找*
---------------------------------------------- - 并返回一个指针
跳转括号,右键并将[]
---------- 命中为数组
再往左走,找int
------------------------------------- ints
.
在几乎所有想要返回指向数组的指针的情况下,最简单的方法是返回指向数组第一个元素的指针.这个指针可以在与数组名相同的上下文中使用,它提供的间接不比返回"指向数组的指针"类型的指针更多或更少,实际上它将保持相同的指针值.
如果你遵循这个你想要一个指向函数的指针返回一个指针int
.你可以构建它(声明的构造比解析更容易).
指针int
:
int *A;
Run Code Online (Sandbox Code Playgroud)
函数返回指针int
:
int *fn();
Run Code Online (Sandbox Code Playgroud)
函数返回指针的指针int
:
int *(*pfn)();
Run Code Online (Sandbox Code Playgroud)
如果你真的想要返回一个指向函数的指针,返回一个指向数组的指针,int
你可以遵循相同的过程.
int数组:
int A[];
Run Code Online (Sandbox Code Playgroud)
指向int数组的指针:
int (*p)[];
Run Code Online (Sandbox Code Playgroud)
函数返回指针...:
int (*fn())[];
Run Code Online (Sandbox Code Playgroud)
指向fn的指针...:
int (*(*pfn)())[];
Run Code Online (Sandbox Code Playgroud)
这就是你拥有的.
归档时间: |
|
查看次数: |
12225 次 |
最近记录: |