함수가 포인터를 반환하는 경우
: 함수 종료시에도 남아 있는 변수의 주소를 반환해야한다. 만일 지역 변수의 주소를 반환한다면 함수가 종료되면 소멸되므로, 오류가 발생할 수 있다.
[지역 변수]
#include<stdio.h>
//결과를 result 저장하고 그 주소를 반환
int* add(int x, int y){
int result;
result = x + y;
return &result;
}
int main(){
int* p = add(3, 4);
printf("%d", *p); //오류 발생
}
[전역 변수]
#include<stdio.h>
//결과를 result 저장하고 그 주소를 반환
int result;
int* add(int x, int y){
result = x + y;
return &result;
}
int main(){
int* p = add(3, 4);
printf("%d", *p);
}
'2학년 2학기 > c언어' 카테고리의 다른 글
9-7장 이중 포인터 (1) | 2024.10.29 |
---|---|
9-6장 함수 포인터 (0) | 2024.10.29 |
9-4장 배열과 포인터 (0) | 2024.10.28 |
9-3장 포인터와 함수 (0) | 2024.10.28 |
9-2장 포인터의 연산 (0) | 2024.10.28 |