嗨,我在"用c ++测试你的技能"中遇到了这个问题.
请让我知道一个例子意味着什么?
编辑部分:对于额外的括号,编辑和删除,对不起.
char (*(*a[4])())[5]
Run Code Online (Sandbox Code Playgroud)
Dev*_*lar 25
遵循螺旋规则(由chris链接),并以标识符开头:
a
Run Code Online (Sandbox Code Playgroud)
...是... ...
a[4]
Run Code Online (Sandbox Code Playgroud)
......一阵4 ...
*a[4]
Run Code Online (Sandbox Code Playgroud)
......指向......
(*a[4])()
Run Code Online (Sandbox Code Playgroud)
......没有参数的功能......
*(*a[4])()
Run Code Online (Sandbox Code Playgroud)
...返回指针...
(*(*a[4])())[5]
Run Code Online (Sandbox Code Playgroud)
......五个数组......
char (*(*a[4])())[5]
Run Code Online (Sandbox Code Playgroud)
...字符.
旁注:给建筑师提供一个很好的打扮,然后找到编写这段代码的程序员,没有评论解释它并给他一个很好的打扮.如果这是作为家庭作业给你的,告诉老师他应该指示你如何使用cdecl,或者如何设计代码看起来不像疯子潦草,而不是浪费你的时间有了这个.
Ret*_*nja 13
另一个例子......除了一个例子之外,什么都不做.
#include <iostream>
typedef char stuff[5];
stuff stuffarray[4] = { "This", "Is", "Bad", "Code" };
stuff* funcThis() { return &(stuffarray[0]); }
stuff* funcIs() { return &(stuffarray[1]); }
stuff* funcBad() { return &(stuffarray[2]); }
stuff* funcCode() { return &(stuffarray[3]); }
int main()
{
char (*(*a[4])())[5] = { funcThis, funcIs, funcBad, funcCode };
for(int i = 0; i < 4; ++i)
{
std::cout << *a[i]() << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子......
#include <stdio.h>
char a[5] = "abcd";
char b[5] = "bcde";
char c[5] = "cdef";
char d[5] = "defg";
char (*f1())[5] { return &a; }
char (*f2())[5] { return &b; }
char (*f3())[5] { return &c; }
char (*f4())[5] { return &d; }
int main()
{
char (*(*a[4])())[5] = { &f1, &f2, &f3, &f4 };
for (int i = 0; i < 4; i++)
printf("%s\n", *a[i]());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
551 次 |
| 最近记录: |