오늘은 C언어의 사용자 정의 함수에 대해 좀 더 다양한 사용법을 이야기 해 보려고 합니다. 지난시간까지 해서 두번에 걸쳐 C언어 function(사용자 정의 함수)에 대해 조금 알아보았었습니다. 혹시 기억이 잘 안나시거나 처음 오신 분들이라면 아래 포스팅을 먼저 참조 해 주시기 바랍니다.
https://mech19.tistory.com/198
C언어 Function 기초 (사용자 정의 함수)
오늘은 c언어의 Function(함수)에 대해서 이야기를 해 보겠습니다. 함수란 무엇인지 다들 잘 알고 계시지요? 어릴 때 많이 배웠습니다. "y=f(x)" 기억나시는지요. 여기서 x에 넣는 값에 따라 y의 값이
mech19.tistory.com
https://mech19.tistory.com/199
C언어 Function 심화 (사용자 정의 함수)
오늘은 c언어 fuction(사용자 정의 함수)의 실제 사용법에 대해서 알아보려고 합니다. 지난 시간에 함수의 형태나 함수의 기본적인 사용법등 사용자 정의 함수의 기초내용은 알아보았으니 처음 오
mech19.tistory.com
자~ 그럼 오늘은 무슨 얘길 할꺼냐~ 하면... 함수에서 포인터와 배열을 이용하는 방법에 대해서 이야기를 해 보려고 합니다. 그렇게 복잡하고 어려운 이야기는 아니니 걱정하지 마시고, 그럼 시작해 보겠습니다.
1. 함수에서 포인터 사용
우리가 이전 시간에 이야기 했던 내용 중에서 main함수와 사용자 정의 함수간에 데이터의 교환은 사용자 정의 함수의 매개변수(인자)와 리턴(반환)값을 이용했었습니다. 기억나시죠? 그런데 그렇게 하면 매개변수(인자)를 이용해서 main함수로 부터 사용자 정의 함수로 데이터를 옮기는 것 까지는 여러개가 되는데, 리턴(반환)값은 하나라서 여러개의 데이터를 사용자 정의 함수에서 main함수로 꺼내어 오는 것은 불가능합니다. 만약에 주고 받아야 할 데이터가 여러개라면 어떻게 해야 할까요? 이때!!!! 바로 얼마전에 어렵게어렵게 배운 포인터가 해결사로 등장합니다. 바로 포인터를 이용하면 간단하게 해결됩니다. 예제를 통해서 한번 보겠습니다.
위 예제는 사용자 정의 함수의 매개변수(인자)를 포인터로 사용했다는 부분이 중요한 포인트 입니다.
사용자 정의 함수 소괄호 안에 들어가는 매개변수(인자)를 이전까지는 변수로만 사용 했는데, 이번에는 포인터로 선언 해 보았습니다. 그리고 main함수에 사용자 정의 함수를 호출 할 때 매개변수(인자)의 자리에 main함수의 int(정수)형 변수인 maina의 주소값을 넣어서 연동시켰습니다.
이렇게 연동이 되었으니 사용자 정의 함수의 포인터 cfa에는 main함수의 변수 maina의 주소값이 들어가 있게 되겠지요.
그러고 난 뒤에 포인터 cfa가 가리키고 있는 주소에 데이터 3을 입력하였습니다. 여기까지 이해가 잘 되시나요? 그럼 결과가 어떻게 되는지 실행해 보겠습니다.
앗, 변수 maina의 값이 바뀌었습니다. 생각보다 쉽죠? 이게 포인터를 이용하여 메모리의 주소를 직접 핸들링 할 수 있는 C언어의 강력한 부분이라고 할 수 있겠습니다. 위의 내용을 그림으로 표현하자면 아래와 같습니다.
사용자 정의 함수에서 포인터를 사용하여 main함수와 데이터를 주고 받는 방법에 대해서 이제 어느정도 이해가 되시나요? 혹시 정확하게 감이 잡히지 않으신다면 한번 더 위 내용을 읽어보시고 직접 한두번 프로그램을 직접 작성해 보시는 것을 추천드립니다.
2. 함수에서 배열 사용
두번째로 함수에서 배열을 사용하는 방법을 이야기 해 보겠습니다.
아래는 5개의 원소릴 가지고 있는 배열의 각각의 원소의 값을 입력하면 저절로 1만큼씩 더해주는 프로그램을 사용자 정의 함수와 배열을 이용하여 만든 프로그램입니다.
여기서도 핵심은 사용자 정의 함수의 매개변수(인자)로 포인터를 사용해야 한다는 부분입니다. 그래서 사용자 정의 함수를 호출 할 때 메인함수의 배열과 사용자 정의 함수의 포인터를 연동시킨 사용자 정의 함수에서 배열 주소에 들어 있는 값을 직접 핸들링 하여 값을 변환하여 주는 것이죠. 기타 특별한 내용은 없습니다.
참고로
위 부분은
이렇게도 작성 할 수 있다는거 다들 알고 계시지요? 그럼 실행해서 결과값을 한번 보도록 하겠습니다.
깔끔하게 잘 실행되는 것을 알 수 있습니다. 어렵지 않죠? 오늘은 여기까지 하겠습니다. 감사합니다.
제 블로그를 방문해 주셔서 감사합니다.
도움이 되셨다면 공감(좋아요) 부탁드리고,
댓글은 다른분들께도 좋은 정보일 수 있으니
공개로 부탁드립니다.
여러분의 작은 정성이 좋은 포스팅을 생산하는
힘이 된답니다. :)
감사합니다.
'PROGRAMMING > C' 카테고리의 다른 글
C언어 Function 응용 #2 (사용자 정의 함수) (0) | 2022.11.23 |
---|---|
C언어 함수의 원형 (0) | 2022.11.21 |
C언어 Function 심화 (사용자 정의 함수) (0) | 2022.11.14 |
C언어 Function 기초 (사용자 정의 함수) (0) | 2022.11.09 |
C언어 포인터 심화과정 (배열포인터, 포인터배열) (0) | 2022.11.03 |
댓글