在C中作为参数传递数组

时间:2016-11-05 06:26:11

标签: c pointers

我正在尝试编写一个直接操作数组的函数。我不想返回任何内容,所以显然我将以某种方式使用指针。

void makeGraph(some parameter) {
    //manipulates array
}

int main() {
    char graph[40][60];
    makeGraph(????)

}

我无法弄清楚要传递的参数。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

  

我正在尝试编写一个直接操作数组的函数。我不想返回任何内容,所以显然我会以某种方式使用指针。

C 中,当您自动传递array时,数组的基址由被调用函数的形式参数存储(此处为{{1}因此,对形式参数所做的任何更改也会影响调用函数的实际参数(在您的情况下为makeGraph())。

所以你可以这样做:

main()

甚至还有其他方法可以在 C 中传递数组。看看这篇文章:Correct way of passing 2 dimensional array into a function

答案 1 :(得分:2)

在C数组中可以作为指向其第一个元素的指针传递。函数原型可以是这些

中的任何一个
void makeGraph(char graph[40][60]);
void makeGraph(char graph[][60]);
void makeGraph(char (*graph)[60]);  

要调用此函数,您可以将参数传递为

makeGraph(graph);  //or
makeGraph(&graph[0]);    

答案 2 :(得分:2)

正如其他人所说。简单

void makeGraph(char graph[40][60]                 
{  // access array elements as graph[x][y] x and y are any number with in the array size 
 }

 int main(void) 
{ //in main you can call it this way: 
 char graph[40][60];  

 makeGraph(graph) 

}