:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
08/09/02 23:33
일단 해결은 했습니다. 그런데 메인함수에서 하부함수로 패러미터 전달을 할때 단순히 배열이름만으로 전달해줘도 괜찮은 이유가 기억이 안나는군요.
예전에 분명히 배웠는데...-_-)a;;; 그 부분만 설명해주실분?
08/09/02 23:53
그냥 (배열 = 포인터) 라고 생각하시고 플밍하셔도 크게 문제는 없습니다. 뭐, 엄연한 차이가 있긴 하지만...
예를 들어서, char * 변수(보통 스트링이죠...)를 전달하는 함수를 호출할때, 배열로 선언한 변수를 그냥 전달하는 경우가 많듯이요.. 즉... char szString[32]; strcpy( szString, "AAA" ); 뭐 이런식으로 자주 쓰잖아요? 근데, strcpy의 첫번째 전달인자는 char * 값이란 말이죠.
08/09/03 08:34
C 언어에서
배열의 이름은 주소값을 나타냅니다. 즉 char test[100]; 이 선언되어 있을 때, &(test[100]) = test 인거죠.(주소값이 똑같다는 말). 그래서 메인에서 함수를 호출할때, 배열같은 경우 배열명(주소값)을 하부 함수로 알려주는거죠. 그러면 하부함수는 받는 인자값의 주소를 알기 때문에 접근할 수 있는거구요.. 단지 주소값만 넘겨주면 힘들지만, 배열명(주소값, test) 앞에 그 알려준 주소값의 변수형(char)를 알려주기 때문에 배열의 이름(배열이 시작하는 주소값)만 가지고도 접근할 수 있는것입니다. EZrock님 일단 call by value, call by reference 의 개념을 명확히 해보시구요 (보통 간단한 swap 함수로 많이 공부하죠^^) 시중에 포인터 책 관련 하나 구입하셔서 보세요.. 그거 한권 보시면 포인터, 주소값 등은 쉽게 깨닫게 됩니다. ps.본문에서는 Account * array[100]; 이 의미를 잘 아셔야 되는데 연산자 우선순위에 의해서 *처리가 먼저 되기 때문에 Account 객체를 가르키는 포인터 변수를 100개 담을 수 있는 배열 구조입니다. 그 주소값은 배열의 이름인 array 로 해도 상관없지만, 문제는 배열의 이름(주소값)만 가지고는 이게 2차원 배열인지, 어떤건지 모른다는거죠.. 그래서 그걸 넘겨줄때는 정확히 명시해줘야 합니다~ 아마도; 오래되서 해봐야 알겠는데;; case MAKE: index = MakeAccount(*pArray, index); break; } int MakeAccount(Account** pArray,int index) .. Account aaa= new Account(); Accout *p = aaa; *(pArray + index) = p; 정도일듯 싶기도 하네요... ㅠㅠ 한동안 자바만 했더니 다 잊어버렸네요...ㅠㅠ
|