【发布时间】:2018-09-25 10:57:16
【问题描述】:
我在理解 C 中的二维数组时遇到了一些困难。
我们来看这个例子:
#include <stdio.h>
void foo(int arr[2][3]) {
printf("%d", *arr);
}
int main() {
int arr[2][3] = { {10, 20, 30},
{40, 50, 60}
};
foo(arr);
return 0;
}
我有几个问题:
-
arr 的值是多少?是arr[0][0]的地址吗?
- 如果 arr 是 arr[0][0] 的地址,那么为什么行:
printf("%d", *arr);
不打印值 10? - 每次运行它,我都会得到一个奇怪的数字。这个数字是什么意思?
谢谢:)
【问题讨论】:
-
您无法使用
%d打印数组。如果你遍历arr的元素,这应该可以工作。 -
(2) 因为数组的地址是第一个元素的地址。你的行是
0, 1,你的列是0, 1, 2。 -
每个问题都错。 1.
arr的值在哪里? 2. 这甚至没有错,3. 未定义的行为?
标签: c arrays dimensional