Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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++ 解释以下程序的o/p_C++_C_Pointers - Fatal编程技术网

C++ 解释以下程序的o/p

C++ 解释以下程序的o/p,c++,c,pointers,C++,C,Pointers,解释以下程序的o/p int main() { int a [2][3] = {5,10,15,20,25,30}; int (*p) [2][3] =&a; printf ("%d\t", ***(p+1)); printf ("%d\t", ***p); printf ("%d\t", ** (*p+1)); } 输出:- Garbage, 5,20? p是指向大小为[2][3]的二维数组的指针 1) p+1这将增加p以跳转到其类型的

解释以下程序的o/p

int main()
{
    int a [2][3] = {5,10,15,20,25,30}; 
    int (*p) [2][3] =&a;
    printf ("%d\t", ***(p+1)); 
    printf ("%d\t", ***p); 
    printf ("%d\t", ** (*p+1));
}
输出:-

Garbage, 5,20?

p
是指向大小为
[2][3]
的二维数组的指针

1)
p+1
这将增加
p
以跳转到其类型的下一个变量,即大小为
[2][3]
的二维数组。由于此位置尚未分配,因此超出了数组
a
。所以,它的行为是未定义的,所以只有它的垃圾值

2)
***p
只是取消引用指针并转到第一个值
5


3) 要了解最后一个是如何工作的,您需要了解数组解引用是如何工作的
a[1][0]
实际上变成了
*(*(a+1)+0)
,因此将给出值
20
。因此,因为
p
&a
,因此
*p
a
。现在将
*(*(a+1)+0)
中的
a
替换为
*p
。这就是第三个答案

缩进代码,使其可读性没有太多解释<代码>*(p+1)未定义。