Как я глобализирую и управляю массивом символов через функции

0

Я пытаюсь сохранить содержимое моего многомерного массива символов через различные возможности доступа к вызовам функций, где он будет изменен. Как я могу это сделать. Нужно ли передавать массив в функцию? Если да, то как мне это сделать. Однако я пытаюсь получить синтаксические ошибки. Это объявление моей функции

void board(int,int,int);

Нужно ли добавлять ссылку на мой многомерный массив символов?

char piece[3][3];

Когда я вызываю функцию, как передать ее в массив?

board(whichplayer,rownum,columnnum);

В самой функции, как я могу добавить ее и использовать ее и объявить?

void board(int movesquare, int row, int column)
 {
  //...
 }
Теги:
arrays

1 ответ

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 был глобальным (и по многим причинам многие люди скажут вам это не так), вы должны передать этот массив в качестве аргумента вашей функции.
Example2:

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 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 */
.
.
.
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню