解释以下程序的o/p
Explain the o/p of following program
解释以下程序的o/p。
int main()
{
int a [2][3] = {5,10,15,20,25,30};
int (*p) [2][3] =&a;
printf ("%dt", ***(p+1));
printf ("%dt", ***p);
printf ("%dt", ** (*p+1));
}
输出:-
Garbage, 5,20?
p
是指向大小为[2][3]
的2D数组的指针。
1) p+1
这将递增p
以跳到其类型的下一个变量,即大小为[2][3]
的2D数组。由于此位置尚未分配,它超出了数组a
。所以,它的未定义行为,所以只有它给出垃圾值。。
2) ***p
只是取消引用指针并转到第一个值5
3) 要了解最后一个是如何工作的,您需要了解数组取消引用的工作原理。a[1][0]
实际上变为*(*(a+1) + 0)
,因此将给出值20
。因此,因为p
是&a
,所以*p
是a
。现在用*p
替换*(*(a+1) + 0)
中的a
。这就是第三个答案
相关文章:
- 内联程序集printf将整数解释为地址
- 有人可以在下面的示例 C++ 程序中解释字符数组 KCHAR1 的奇怪行为吗?
- 请有人解释该程序的工作原理
- 您可以在此程序中解释Array 5的目的吗?
- 解释程序的输出
- 在 c++ 程序中调试链表以添加两个数字: 有人可以解释为什么 l3=l3->next;导致错误?
- 任何人都可以解释此程序的类型促销以及为什么输出相同
- 字符串中的空格是否会改变程序解释它的方式
- 有人可以向我解释一下这段代码是如何工作的吗?(程序在预期数值且用户输入其他输入时再次要求用户输入)
- 程序读取文字或解释变量所需的时间是否更少
- C++中更快地执行两个程序的可能解释(使用 Python 比较)?
- 有人可以解释为什么这个程序可以计算小数点后的位数
- 有人可以解释为什么该程序显示我 6 和 4
- 有人可以解释这个 c++ 程序的输出吗?
- C++:帮助解释简单程序的行为
- 有人可以解释这个程序如何提供这个输出
- QT应用程序无法解释使用SQLite插入功能
- 解释 C++/SDL2 程序的 valgrind 输出
- C++带有地图的程序 - 解释下面的程序是如何工作的
- 字面量和常量是如何被程序解释和保存的