http://www.yes24.com/Product/Goods/74269921
혼자 공부하는 C 언어 - YES24
혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서이 책은 독학으로 C 언어를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학
www.yes24.com
반환값이 있는 함수는 호출한 함수로 값을 복사해서 반환합니다. 함수 안에서 사용한 지역 변수는 함수가 반환되면 저장 공간이 사라지므로 그 값을 복사하여 반환해야 호출한 함수에서 사용할 수 있습니다. 그러나 함수가 반환된 후에도 변수의 저장 공간이 곘혹 유지된다면 주소를 반환하여 호출하는 함수에서 쓸 수도 있습니다. 즉, 정적 지역 변수와 전역 변수는 주소를 반환할 수 있습니다.
#include <stdio.h>
int* sum(int a, int b); // int형 변수의 주소를 반환하는 함수 선언
int main(void)
{
int *resp; // 반환값을 저장할 포인터 resp
resp = sum(10, 20); // 반환된 주소는 resp에 저장
printf("두 정수의 합 : %d\n", *resp); // resp가 가리키는 변숫값 출력
return 0;
}
int* sum(int a, int b) // int형 변수의 주소를 반환하는 함수
{
static int res; // 정적 지역 변수
res = a + b; // 두 정수의 합을 res에 저장
return &res;
}
이처럼 주소를 반환하는 함수를 만들 때는 주의할 것이 있습니다. 반환값의 자료형은 반환값을 저장할 포인터의 자료형과 같아야 합니다. 또한 지역 변수의 주소를 반환해서는 안됩니다.
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[혼자 공부하는 C언어] 2차원 배열의 다양한 초기화 방법 (0) | 2022.12.12 |
---|---|
[혼자 공부하는 C언어] 2차원 배열 선언과 요소 사용 (0) | 2022.12.12 |
[혼자 공부하는 C언어] 주소를 전달하는 방법 (0) | 2022.12.11 |
[혼자 공부하는 C언어] 값을 복사해서 전달하는 방법 (0) | 2022.12.11 |
[혼자 공부하는 C언어] 레지스터 변수 (0) | 2022.12.10 |