지역변수의 주소를 반환해서 생기는 문제 1

CODEDRAGON Development/C, C++

반응형

   

지역변수의 주소를 반환해서 생기는 문제 1

정적(static)변수를 사용하여 지역변수의 주소를 반환해서 생기는 문제 해결하기

함수의 결과로 정적 변수의 주소를 반환

   

   

학습내용

정적(static)변수: 함수가 종료된 후에도 메모리 공간이 소멸되지 않고 남아 있습니다.

   

   

소스코드

   

#include <stdio.h>

//
함수의 선언
int* input( );

int main(void){
        int* p=NULL;

        p=input( );                     //
함수의 호출
        printf("%d \n", *p);

        return 0;
}

//
함수의 정의
int* input(){

        static int num;         //
정적 변수 선언
        fflush(stdout);
        scanf("%d", &num);

        return &num;    //
경고 없어짐
}       // static
키워드가 붙였으므로 num변수는 메모리에서 사라지지 않음


   

   

출력결과