为什么这个程序没有抛出任何错误

Why this program is not throwing any error?

本文关键字:任何 错误 程序 为什么      更新时间:2023-10-16

我去面试了。采访者提出了这个问题。看到这个问题后,我告诉他,由于p未声明,所以会出现错误。但当我在电脑上运行该程序时,我对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 -------------------------+

由于您只是在询问p:的声明

char **ptr[] = {s+3, s+2, s+1, s}, ***p;//Here

与相同

char **ptr[] = {s+3, s+2, s+1, s};
char ***p;