본문 바로가기
2학년 2학기/c언어

9-5장 함수가 포인터를 반환하는 경우

by kkkkk1023 2024. 10. 29.

함수가 포인터를 반환하는 경우

: 함수 종료시에도 남아 있는 변수의 주소를 반환해야한다. 만일 지역 변수의 주소를 반환한다면 함수가 종료되면 소멸되므로, 오류가 발생할 수 있다.

 

[지역 변수]

#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