我去面试了。面试官给出了这个问题。
看到这个问题,我告诉他会报错,因为p
is undeclared。但是当我在我的 PC 上运行该程序时,令我惊讶的是 ink
的答案/输出也没有任何错误。请帮助我理解这个问题。
#include <iostream>
using namespace std;
int main()
{
static char *s[] = {"black", "white", "pink", "violet"};
char **ptr[] = {s+3, s+2, s+1, s}, ***p;//Here
p = ptr;
++p;
cout << **p+1;
return 0;
}
最佳答案
这个怎么样:-
static char *s[] = {"black", "white", "pink", "violet"};
^ ^ ^ ^
| | | |
| | | |
| | | |
+------------+ | |
+---|---|----+ |
| | | |
+ ---|---|---|------------+
| | | |
char **ptr[] = {s+3, s+2, s+1,s};
^ ^
char ***p; | |
| |
p=ptr ; --------+ |
|
++p; -----------------+ {'p','i','n','k'}
^
**p+1 -------------------------+
关于c++ - 为什么这个程序没有抛出任何错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247054/