c - 以另一种方式传递多维数组?

标签 c arrays multidimensional-array

#include <stdio.h>

void arraypass(int from, int to, int a[][2]);

int main()
{
    setbuf(stdout, NULL);
    int t1 = 0, t2 = 0;
    int testArray[10][2];

    for (t1 = 0; t1 < 10; t1++)
    {
        testArray[t1][t2] = t1 + 1;
    }

    t2++;

    for (t1 = 0; t1 < 10; t1++)
    {
        testArray[t1][t2] = t1 + 10;
    }

    arraypass(1,5,testArray);

    return 0;
}

void arraypass(int from, int to, int a[][2])
{
    int b;
    for (b = from; b <= to; b++)
    {
        printf("%d ",a[b][0]);
        printf("%d\n",a[b][1]);
    }
}

为什么会这样

int a[][2]

可以,但不行

int a[][] 

这里的参数定义?

void arraypass(int from, int to, int a[][2]);

并且,有没有办法可以一次传递整个多维数组,或者我是否需要执行某种循环?

最佳答案

对于编译器来说, vector 是指向其第一项的隐藏指针。 例如:

int a[2];
a[0]=0;
a[1]=1;

与以下内容相同:

int a[2];
*(a+0)=0;
*(a+1)=1;

当您传递多维数组(或简单数组)时,您应该使用指针而不是 vector :

void arraypass(int from, int to, int **a);

如果你想使用它,你可以这样做:

void arraypass(int from, int to, int **a){
int i,j;
for(i=from; i<end; i++) {
for(j=0; j<2; j++) {
printf("%d",a[i][j]);
}
}

关于c - 以另一种方式传递多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020626/

相关文章:

c - UDP 广播在 Linux 2.6.33.9 rt 上一段时间后中断

c - 这个循环是无限的,但它不应该是 - C

PHP 语法、数组和错误

python - Numba - nopython 模式是否支持元组列表?

C++ 多维数组成员访问器

c++ - 谁能告诉我Windows API方法SendMessage的最后一个参数代表什么?

c - 如何检查 TCP 层上的套接字是否处于事件状态?

javascript - 如何从数组中删除元素?

php - (PHP) 二维数组第一个元素为索引 "name"

javascript - 如何在 Javascript 中创建多维数组?