修改数组的功能 - 指针作为输入

时间:2014-07-21 14:05:22

标签: c++ arrays function pointers

我想创建一个函数,它接受现有的9x9空整数数组,并插入从文件中获取的值(因此该函数也将文件名作为输入)。但我无法弄清楚如何正确地做到这一点,即使我尝试了很多不同的方法。基本上,这就是我所做的:

int board = new int[9][9] //The empty array

int addToArray(int *board, string filename) {

    /* Code to insert values in each field is tested and works so 
       I will just show a quick example. The below is NOT the full code */
    int someValue = 5;
    board[0][0]   = someValue;

    /* Return a value depending on whether or not it succeeds. The variable 'succes'
       is defined in the full code */
    if (succes) {
        return 0;
    } else {
        return -1;
    }
}

与实际代码相比,这是一个非常简化的示例,但它是将指向数组的指针传递到某个函数的整体功能,并且具有修改数组的功能,我想要的。谁能告诉我怎么做?

2 个答案:

答案 0 :(得分:0)

如果有人终于阅读了这个问题,我使用了Johnny的链接中的方法3。为方便起见,我复制粘贴代码并添加了一些注释......

// Make an empty, and un-sized, array
int **array;

// Make the arrays 9 long
array = new int *[9];

// For each of the 9 arrays, make a new array of length 9, resulting in a 9x9 array.
for(int i = 0; i < 9; i++)
    array[i] = new int[9];

// The function to modify the array
void addToArray(int **a)
{
    // Function code. Note that ** is not used when calling array[][] in here.
}
passFunc(array); 

答案 1 :(得分:0)

应该只是

int **board

在函数参数中。

简单的规则是* name = name [],因此在数组中有很多[],你需要在参数中包含尽可能多的*。