如何跨函数全局化和操作字符数组

时间:2013-10-05 20:33:14

标签: c++ c arrays

我试图通过对函数调用的各种访问来维护我的多维字符数组的内容,在那里它将被更改。我怎样才能做到这一点。我需要将数组传递给函数吗?如果是这样,我该怎么做。但是,我尝试我得到语法错误。 这是我的函数声明

void board(int,int,int);

我是否需要添加对多维字符数组的引用?

char piece[3][3];

当我调用该函数时,如何将其传递给数组?

board(whichplayer,rownum,columnnum);

在函数本身中,如何添加并使用它并声明它?

void board(int movesquare, int row, int column)
 {
  //...
 }

1 个答案:

答案 0 :(得分:1)

如果您的数组被声明为全局变量,那么在声明的同一文件中的每个函数中,您都不必将数组作为函数参数传递。
示例:

char myArray[3][3];
void some_function(int var1,int var2);

int main(void)
{
  some_function(2,3);
.
.
.

}
void some_function(int var1, int var2)
{
extern int myArray[][3]; /* not necessary but just a reminder that 
                         you will use global variable in your function, 
                         size not necessary because this information in given
                          in  declaration on top */

myArray[var1][var2]=x; /* legal to modify global array */
.
.
.
}

如果你不希望myArray是全局的(并且很多人会告诉你不要这样做),你必须将该数组作为参数传递给你的函数。
例2:

void some_function(char passed_array[][3],int size,int var1, int var2)
    /* array will be treated as pointer to 1d 3-elements array of chars,
    so empty first size   is unnecessary in first argument,
    but you will probably want to know what's the 
    true size so you pass it as 2nd argument to function */

int main(void)
{
  char myArray[3][3];
  some_function(myArray,3,1,1);
  .
  .
  .
}
void some_function(char passed_array[][3],int size, int var1, int var2)
{
  passed_array[var1][var2]=x; /* passed_array is a pointer so changes made here 
  will be visible as changes in myArray in main */
.
.
.
}