:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/07/20 15:22
요즘 한창 C++에 재미를 붙이신 것 같네요 ^^
일단 두 가지의 문제가 발생하는 군요. 1. find(&arr,size,value); 여기서 arr 자체가 주소값을 가지는 포인트 상수이므로 find(arr,size,value)로 호출하는 것이 맞습니다. 2. 이렇게 수정하고 나면 또 에러가 발생합니다. if(arr[ix]=value) 이 부분에서 에러가 발생하는데 arr을 const로 선언했으므로 거기에 value를 할당할 수 없다는 에러입니다. 여기에 값을 할당할 생각이라면 const로 선언하지 않는 것이 방법이겠네요.
09/07/20 15:36
MoreThanAir님// 하하;;; 재미들린것 같다 라고 이쁘게 보아주신다면 감사하고요...
그렇다면 arr 배열을 직접 넘겨주라는 말씀이시죠? 제가 잘못 이해한 것인지... 배열을 직접 넘겨주는 것 = 배열의 주소값을 넘겨주는 것 이라고 알고 있었거든요. 배열을 직접 넘겨주어도 배열 데이터가 다 넘어가는 것이 아니라 첫 요소의 주소값이 넘어간다고... 그래서 &arr 이런 식으로 배열의 주소값을 넘겨주어도 결과를 얻어낼 수 있을 것이라 생각했는데 아니었나봅니다. 아, 그리고 if 문은 == 항등연산자를 사용해야 하는 건데 제가 실수했네요; ㅡ_ㅡ;; 으으으으;;; 그런데 이번에는 또 다른 문제가 발생하는데 컴파일에는 문제가 없는데 실행하니까 에러가 발생하네요?? if(arr[ix] == value) 이 부분에서 계산을 하지 못하고 튕겨버리는데 왜 그럴까요?
09/07/20 15:42
아;; 문제를 해결했습니다.
if / else 문을 잘못 두었군요. for문이 끝날때까지는 돌려야 하는데 끝나기도 전에 0 을 리턴해버리니;;;; main() 에서 0을 리턴받았을 경우 오류체크를 아직 추가하기 전이라서 그랬군요. 좌우지간 답변 정말 감사합니다!
09/07/20 18:02
DECIDE 님//
"배열을 직접 넘겨주어도 배열 데이터가 다 넘어가는 것이 아니라 첫 요소의 주소값이 넘어간다고... 그래서 &arr 이런 식으로 배열의 주소값을 넘겨주어도 결과를 얻어낼 수 있을 것이라 생각했는데 아니었나봅니다. " 에, 첫번째 줄은 맞는 이야기입니다. 그러나, "첫 요소의 주소값"이므로, 정확히 표현하자면 &arr[0] , 이렇게 되는거죠. &arr 은 첫 요소의 주소값을 저장하고 있는 arr 이라는 변수의 주소입니다. 즉, 첫 요소의 주소값이 저장되어 있는 공간의 주소가 되는거죠. 첫번째 요소의 주소가 0x2000 이라 가정하면, &arr[0] -> 0x2000 &arr -> 0x2000 이라는 값이 저장된 공간의 주소 죄송합니다만...제가 더 쉽게 설명드릴 능력이 없군요..ㅡ,.ㅡ;;
09/07/20 19:09
정신놓은너구리님// 아하, 그렇군요.
첫 요소의 주소값과 첫 요소의 주소값이 저장되어있는 공간의 주소값 이거 뭐 약간 유상무상무 스럽긴 하지만 님의 설명이 이해가 잘 되었습니다. 감사합니다.
09/07/20 20:13
배열의 주소는 참 재미있지요. arr, &arr[0]와 &arr 은 조금씩 다릅니다.
최근 공부하시는것 같으니 생각해볼 문제로 적합하겠네요. sizeof(arr), sizeof(&arr[0]), sizeof(&arr), cout<<(int)arr, cout<<(int)(&arr[0]), cout<<(int)(&arr) 등을 해보세요!!
|