어찌보면 간단한건데... <div><br></div> <div>독학으로 공부하다보니 조금 응용하거나 변경하려고 하면 이해가 안되서 어려운 점이 있네요.</div> <div><br></div> <div><br></div> <div>1. 함수에서 변수들을 받음</div> <div><br></div> <div>2. 함수에서 일련의 데이터 작업을 통해 배열을 만들어냄.</div> <div>배열의 길이는 그때그때 다름</div> <div>해당 배열을 리턴함</div> <div><br></div> <div>3. 메인 함수에서 리턴받은 값을 변수에 저장함.</div> <div>이 변수를 출력함.</div> <div><br></div> <div><br></div> <div>이런 순서의 프로그램인데...</div> <div>계속 오류를 뿜어내다가 아래의 예제를 보고..</div> <div>함수를 * 포인터형??으로 바꿔서 원하는 대로 만드는데엔 성공 했습니다.</div> <div><br></div> <div>-- [예제] --</div> <div><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">#include <stdio.h></span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">#include <stdlib.h></span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">int* mat_mult(int m[], int n);</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">int main(void)</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">{</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> int ma[4]={1, 3, 5, 7};</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> int *mb, i;</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> for(i=0;i<4;i++)</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> printf("ma[%d]=%2d ", i, ma[i]);</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> printf("\n");</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> mb=mat_mult(ma, 4);</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> for(i=0;i<4;i++)</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> printf("mb[%d]=%2d ", i, mb[i]);</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;width:1px;height:1px;float:right;"></span><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> return 0;</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">}</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">int* mat_mult(int m[], int n)</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">{</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> int *mc=(int*)malloc(n);</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> for(int i=0;i<n;i++)</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> mc[i]=m[i]*n;</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"> return mc;</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">}</span><br style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"></div> <div><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;">-- [예제 끝] --</span></div> <div><span style="color:#050505;font-family:'Malgun Gothic', '맑은고딕', NanumGothic, '나눔고딕', '돋움', Dotum;font-size:13px;line-height:26px;"><br></span></div> <div><font color="#050505" face="Malgun Gothic, 맑은고딕, NanumGothic, 나눔고딕, 돋움, Dotum" size="2"><span style="line-height:26px;">궁금한점은..</span></font></div> <div><font color="#050505" face="Malgun Gothic, 맑은고딕, NanumGothic, 나눔고딕, 돋움, Dotum" size="2"><span style="line-height:26px;">예제 소스에서 mat_mult 함수를 int*로 해주었는데요.</span></font></div> <div><font color="#050505" face="Malgun Gothic, 맑은고딕, NanumGothic, 나눔고딕, 돋움, Dotum" size="2"><span style="line-height:26px;">이게 어떤 의미인가요?</span></font></div> <div>또, 메인 함수에서 int *mb랑 같은 의미인가요?</div> <div><br></div> <div>아직 포인터에 대해 감이 제대로 안 잡혀서 그런것도 있지만..</div> <div>int *mb</div> <div>이 뜻이..</div> <div>int형의 크기를 갖는 변수의 주소를 저장할 수 있는 mb라는걸 선언한다.</div> <div>라고 이해 하는게 맞나요?</div> <div><br></div> <div>그러면 int* mat_mult 함수는..</div> <div>int형의 데이터를 갖는 mat_mult 함수를 만든다.</div> <div>라는건가요?</div> <div><br></div> <div>처음에 에러났던 이유는 mat_mult 함수를 *로 선언하지 않고 그냥 int mat_mult(){ }</div> <div>로 했었기 때문인거 같은데..</div> <div>이 두개의 차이를 제대로 이해를 못하겠습니다. ㅠㅠ</div> <div><br></div> <div>그냥 int mat_mult로 하게 되면 해당 함수가 작동한 후 없어지므로...</div> <div>만들어진 데이터를 계속해서 유지하기 위해 포인터를 사용한다.. 주소를 넘겨준다... 메모리 주소로 제어한다...</div> <div>뭐 이런식이라는 말은 주워들은건 많은데 정확히 위의 동작들이 어떻게 구동되는지 이해가 안되네요 ㅠㅠ</div> <div><br></div> <div><br></div> <div>제가 이해 한게 맞는건지... 아니면 잘못된건지...</div> <div>도움 부탁드립니다!</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.