Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 需要解释-三维数组、指针_C_Arrays_Pointers - Fatal编程技术网

C 需要解释-三维数组、指针

C 需要解释-三维数组、指针,c,arrays,pointers,C,Arrays,Pointers,我偶然发现了这个片段: #include<stdio.h> int main() { int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} }; int *p,*q; p=&a[2][2][2]; *q=***a; printf("%d----%d",*p,*q); return 0; } 然而,我仍然无法理解这一点。我希望以易于理解的方式提供相同的信息(并非我在抱怨上述解释)。 请提供第6行和第7

我偶然发现了这个片段:

#include<stdio.h>
int main()
{
    int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} };
    int *p,*q;
    p=&a[2][2][2];
    *q=***a;
    printf("%d----%d",*p,*q);
    return 0;
}
然而,我仍然无法理解这一点。我希望以易于理解的方式提供相同的信息(并非我在抱怨上述解释)。


请提供第6行和第7行的解释。

您的代码有几个问题:

#include<stdio.h>
int main()
{
    int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} };
p
被初始化为无效的内存位置。由于
a
每个维度只有2个元素,因此唯一有效的下标是
0
1

    *q=***a;
q
尚未初始化为指向内存中的有效位置。使用
*q
去参考
q
是未定义的行为

    printf("%d----%d",*p,*q);
    return 0;
}

q
未初始化,因此用
*q
解除对它的引用是未定义的行为。“我遇到了这个片段”在您的问题中,您是否会提供此代码的源代码或至少完整的上下文?这是一个标准问题,即查找代码片段中的错误或预测我前面提到的输出。请提供教科书中问题的确切措辞,以便我们可以帮助您。通过释义,您可能会遗漏重要信息,从而得出正确答案。谢谢,我们将完成此过程。不是“我的代码”,我是为了练习而写的。你介意为上面的每个错误提供纠正措施吗?这样我就可以关联。@Masse我建议你在其他地方找到“练习代码”。如果这是你当前来源的一个典型例子,那就扔掉它。@Masse当我写下这个答案时,我试着去想我能提出的任何积极的建议。但是,代码的用途还不清楚,所以我无法想出任何方法。谢谢。这些是“预测输出/发现错误”类型的问题。我没有把“错误”看得太重。在我真正“评判”他们之前,我必须先了解他们。
    *q=***a;
    printf("%d----%d",*p,*q);
    return 0;
}