gpt4 book ai didi

c - 如何获得这个C程序的输出?

转载 作者:行者123 更新时间:2023-11-30 21:26:49 26 4
gpt4 key购买 nike

#include <stdio.h>
int main () {
int a[3][5] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
int *p[] = {*a, *(a + 1) , *(a + 2) };
int (*ptr)[5];
ptr = a;
printf ("%d\n", *(*(p + 1) + 1));
printf ("%d %d %d\n", ** ptr , *(*( ptr + 1) + 2) , *(*( ptr + 2) + 3));
printf ("%d %d %d\n", ptr [0][0] , ptr [1][2] , ptr [2][3]) ;
return 0;
}

输出为

7
1 8 14
1 8 14

有人可以一步一步解释这个程序吗?真的很困惑...

最佳答案

例如这一行:

printf ("%d\n", *(*(p + 1) + 1));

看那行:

int *p[] = {*a, *(a + 1) , *(a + 2) };

所以p是指向具有某些地址和值的整数指针的指针(数组)*a在初始索引处。

然后(p + 1)p 的下一个地址及其值*(p + 1)是指针*(a + 1)

下一步,a是二维数组且 (a + 1)是值 6, 7, 8, 9, 10 的地址数组

因此*(p + 1)是值 6 和 *(p + 1) + 1 的地址是值 7 的地址。

所以我们得到:*(*(p + 1) + 1)是来自值 7 的地址的整数值,即

printf ("%d\n", *(*(p + 1) + 1));

返回7

尝试找出其余的代码。同样的方法。

关于c - 如何获得这个C程序的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59259898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com