我如何将二维数组传递给以下函数
arrayInput(char **inputArray)
然后能够使用标准二维数组语法访问数组
inputArray[][]
具体来说,我需要能够调用 atoi(inpuArray[0])
将字符数组转换为 int。我知道这不是最好的方式,但项目要求以这种方式工作。
最佳答案
在这种情况下,它不是 char
的二维数组,而是 char* 指针数组。像这样:
void arrayInput(char **inputArray) {
printf("%s\n", inputArray[0]);
printf("%s\n", inputArray[1]);
}
int main() {
char* strings[] = { "hello", "world" };
arrayInput(strings);
}
strings
的类型是 char*[]
(指向 char 的指针数组),它会衰减到 char**
(指向 char 的指针)。
--
对于真正的二维数组,行在同一内存缓冲区中串联,第二行的维度需要是类型的一部分。例如
void arrayInput(int mat[][2]) {
printf("%d %d\n", mat[0][0], mat[0][1]);
printf("%d %d\n", mat[1][0], mat[1][1]);
}
int main() {
int mat[][2] = { {1, 2}, {3, 4} };
arrayInput(mat);
}
这里的 mat
是 int[2][2]
类型,衰减为 int[][2]
(array of array 2 int) 和 int(*)[2]
(指向 2 int 数组的指针)。
关于c - 在 C 中将二维数组作为双指针传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675171/