gpt4 book ai didi

c - 在 C 中使用指针与数组

转载 作者:行者123 更新时间:2023-11-30 18:32:06 25 4
gpt4 key购买 nike

以下程序的输出是什么?

int main(void) {
int n[3][3] = {
2, 4, 3,
6, 8, 5,
3, 5, 1
};
int i, *ptr;
ptr = n;
for (i = 0; i <= 8; i++)
printf("\n%d", *(ptr + i));
}

这里 n 对于二维数组意味着什么? ptr 会有什么?我在使用指针和数组时遇到很多困惑。

每次输出都是4。我试图理解为什么它每次都打印 4?

任何解释都会对我有很大帮助。

最佳答案

ptr 是一个“指向”“n”矩阵的第一个元素的指针。你让它做:

ptr = n[0];

你不能这样做:

ptr = n;

因为“n”是“数组”的“数组”(第一个数组存储 2、4 和 3,第二个数组存储 6、8 和 5,依此类推...)

当您声明“n”二维数组时,元素按线性顺序存储在内存中(一个接一个的整数分配),这就是为什么您可以使“n”指向一个元素(第一个元素)在本例中),然后使其指向下一个元素(通过将指针加 1,这称为“指针算术”)。

这是使程序以正确方式工作的小修正:

#include <stdio.h>

int main(void) {
int n[3][3] = {
2, 4, 3,
6, 8, 5,
3, 5, 1
};
int i, *ptr;
ptr = n[0];
for (i = 0; i <= 8; i++)
printf("\n%d", *(ptr + i));
}

输出将是:

24368535

关于c - 在 C 中使用指针与数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869498/

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