【发布时间】:2020-07-03 03:20:58
【问题描述】:
大家好!我正在学习 C 语言,现在在处理指针和数组时非常混乱。
1) 为什么我不能使用指针创建一个 int 类型的二维数组?喜欢
int *arr[4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
或
int **arr = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
虽然对我来说似乎很有说服力......
- 另外,为什么我们使用 char * arr[5] 代替 char arr[5][40] 而不是 char * arr[40],这对我来说根本没有意义...
提前非常感谢你们!
【问题讨论】:
-
你可以有一个指针数组,每个指针指向一个数组...或者你可以有一个指向数组的指针,指向一个数组数组。不过,两者并不相同。
-
int arr[3][4]是你想要的。 -
int arr[][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12} };也可以使用
-
int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};将使arr成为int的4 元素数组的3 元素数组。int (*pArr)[4] = arr;将使pArr成为指向int的 4 元素数组的指针,该数组指向arr。 -
嗨@Dmitri!我明白你的意思了!因为我看到我们可以为字符串数组做到这一点,所以我想知道为什么我们不能对简单的二维数组使用它