2013-10-05 3 views
0

내 다차원 문자 배열의 내용을 변경하려는 함수 호출에 대한 다양한 액세스를 통해 유지하려고합니다. 어떻게하면 돼? 함수에 배열을 전달해야합니까? 그렇다면 어떻게해야합니까? 그러나 구문 오류가 발생했습니다. 이 내 함수 선언입니다함수를 통해 문자 배열을 전역 화하고 조작하는 방법

void board(int,int,int);

내가 내 다차원 문자 배열에 대한 참조를 추가해야합니까? 나는이 배열로 전달 어떻게 함수를 호출

char piece[3][3];

? 자체가 내가 그것을 어떻게 추가합니까 그것을 사용하고 선언하는 기능에

board(whichplayer,rownum,columnnum);

?

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

그래서 요약하기는 기본적으로이 배열에 대해 알아야 할 모든 것을 알고 싶어? ;) – Duck

+0

문자를 일정하게 유지 하시겠습니까? 또는 당신이 함수를 변경하기를 원합니까? !!, 배열과 함수는 무엇입니까? movessquare 또는 whichplayer? 더 명확히 ... –

답변

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 */ 
. 
. 
. 
} 
관련 문제