如何将2-D数组的特定行作为1-D数组传递给C中的函数?

时间:2017-05-01 10:08:02

标签: c arrays multidimensional-array

我有一个以 1-D数组为参数的函数。我想传递给此函数的值存在于二维数组的特定行中。如何将该行作为一维数组传递给函数?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法之一将2d数组nth行(array[x][y])传递给函数(func)。确保将数组(size)的 nth row 传递给func

  • func(array[n], y);
  • func(&array[n][0], y);
  • func(*(array+n), y);

以上表达式中的每一个都评估为相同的值(即nth row中第一个元素的地址)

答案 1 :(得分:0)

#include <stdio.h>

void foo(int *x, size_t n) {
    printf("%d\n", x[0]); /* marks[10][0] */
    if (n > 10) printf("%d\n", x[10]); /* marks[10][10] */
}

int main(void) {
    int marks[42][42] = {0};
    foo(marks[10], sizeof marks[10] / sizeof marks[10][0]);
}