sách gpt4 ai đã đi

c - a[0] 在多维数组中表示(意思)是什么?

In lại 作者:太空宇宙 更新时间:2023-11-04 03:11:53 27 4
mua khóa gpt4 Nike

我刚开始看书学习 C 语言,对他们讨论指针和数组的部分并没有感到困惑。如果有一个名为 a[NUM_ROW][NUM_COLS] 的多维数组(我只是将此数组讨论为特定的二维数组),那么 a[0] Điều này có nghĩa là gì?

我正在研究的部分有一部分是关于“处理多维数组的行”的,它有一个例子

p = &a[i][0] ; 

可以写成

p = a[i]; 

书上说 a[i] 是指向第 i 行第一个元素的指针。

然后是关于“使用多维数组的名称作为指针”的部分,其中在 int a[NUM_ROWS][NUM_COLS] 的情况下,数组名称 a 不是指针a[0][0] 而是指向 a[0] 的指针。

a[0] 是否与第一部分的a[i] 具有相同的含义?我有点困惑,因为在关于“使用多维数组的名称作为指针”的部分中,书中说数组名称 a 是指向长度为 NUM_COLS 的整数数组的指针(并且 a 的类型为 int (*) [NUM_COLS]

我想知道 a[0] 是否表示长度为 NUM_COLS 的整数数组或指向第 0 行中第一个元素的指针。(或者是同一件事?可能是因为我有点新概念和困惑。)

附言这本书是C编程(KNK)的第12.4章

1 Câu trả lời

通常,数组的名称会衰减为指向其第一个元素的指针。多维数组基本上只是数组的数组,所以当您有 int a[NUM_ROW][NUM_COL] giờ,a[i] 是第 i 个元素的“名称” '扔。

因此,根据上述规则,a[i] 衰减为指向该行第一个元素的指针,即 a[i][0]。为了创建一个指针,我们将 & 放在表达式之前,即 &a[i][0].

并且Một 衰减为指向二维数组第一个元素的指针。主数组的每个元素都是一行,而不是一个单独的整数,所以 Một 等同于 &a[0], thay vì &a[0][0] .

a[0]a[0][0]的内存位置相同,区别在于类型的表达。 a[0][0]的类型是số nguyên,但是a[0]的类型是int[NUM_COL] ,在很多情况下会退化为 int *. sử dụng loại của 运算符最容易看到这一点:

printf("size of a = %d, size of a[0] = %d, size of a[0][0] = %d\n", sizeof a, sizeof a[0], sizeof a[0][0]);

nếu như NUM_ROW = 5NUM_COL = 10,这可能会打印:

size of a = 200, size of a[0] = 40, size of a[0][0] = 4

关于c - a[0] 在多维数组中表示(意思)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550117/

27 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com