c - 在 C 中将二维数组作为双指针传递

标签 c function pointers multidimensional-array pass-by-reference

我如何将二维数组传递给以下函数

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);
}

这里的 matint[2][2] 类型,衰减为 int[][2](array of array 2 int) 和 int(*)[2](指向 2 int 数组的指针)。

关于c - 在 C 中将二维数组作为双指针传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675171/

相关文章:

c++ - 找到广场上的所有水坑(算法)

c - 如何在我自己的 PostgreSQL 扩展中使用内部 PostGIS 函数?

c - 函数宏问题

c++ - 交换两个对象的两个属性的值

c - Linux内核中嵌入锁的动态分配/释放结构

c - 为什么这个程序中的指针指向不相关的字段?

python - 添加到函数中定义的列表

R 函数 : Print Warning Only on First Call of Function

c++ - 如何使用字符串的字符指针?

c++ - python::boost::对象分配