2017-04-22 149 views
0

我收到了一个任务,虽然没有指定我想实现指针的使用。我遇到的问题是我相信我没有第二次正确传递2D阵列。我第二次的意思是我想将数组从main传递给一个函数,然后再从这个函数传递给另一个函数(如果有人知道这样做的一些适当的术语,我将不胜感激,如果你能分享它。 )由于我已经写了一堆其他代码,我将提供如何传递它的方法,如果我正确地做到了这一点,我将提供其余代码以查找代码中是否存在其他错误。传递二维数组

int main(){ 
    char seats[rows][columns] //rows and columns are global integers 
    assignSeats(&seats); 
} 
void assignSeats(char (*sPlan)[rows][columns]){ 
    assignFirstClass(sPlan); 
} 
void assignFirstClass(char (*sPlan)[rows][columns]){ 
    //user inputs for row and col 
    (*sPlan)[row][col] = 'X'; 
} 

只是提到,我没有得到任何错误,只是我没有得到我给的数组位置的值。虽然错误可能在其他地方,但我首先要确认我正在正确地传递数组,因为这对我来说是新的。预先感谢您的帮助。

解决方案 问题是不是传递指针的方法,简单地说,而不是:

(*sPlan)[row][col] = 'X'; 

我写道:

(*sPlan)[row][col]; 

它只是去多次传给我。

+1

的[传递的2D阵列,以C++函数]可能的复制(http://stackoverflow.com/questions/8767166/passing-a-2d-array-to-ac功能) – nitronoid

+0

是的,我已经看到了,这就是我做了第一遍。但它并没有解决第二遍问题。这是我询问的地方。 –

+0

查看此[问题](https://stackoverflow.com/questions/8767166/passing-a-2d-array-to-ac-function)为传递二维数组的不同方法 – nitronoid

回答

0

您可以通过将您的电话替换为assignSeats(seats);并将您的功能参数更改为assignSeats(char (&sPlan)[rows][columns]来通过参考来传递数组,您的第二个功能也是如此。

您的函数还需要返回类型,并且在第二个函数定义中缺少括号。

建议的修复:

#include <iostream> 

int main() 
{ 
    char seats[rows][columns]; //rows and columns are global integers 
    assignSeats(seats); 
    std::cout<<seats[row][col]; //Check the function has worked 
    return 0; 
} 

void assignSeats(char (&sPlan)[rows][columns]) 
{ 
    assignFirstClass(sPlan); 
} 

void assignFirstClass(char (&sPlan)[rows][columns]) 
{ 
    //user inputs for row and col 
    sPlan[row][col] = 'X'; 
} 
+0

可悲的是,这也没有做到这一点。 –

+0

@ Jorge你期待什么结果,你如何检查它? – nitronoid

+0

@ nitronoid函数assignSeats(席位)后,在主函数中调用另一个函数来打印当前值。在分配之前,我将全部初始化为'*'。当我在assignSeats(席位)之前打印它时,我得到所有*。这就是为什么我知道第一次传球正常。我期待在用户在assignFirstClass函数中选择的一行中的'X',我没有得到。 –