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

CODEDRAGON Development/C, C++

반응형

   

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

1차원 배열이 선언된 곳에 static키워드를 붙여주어서 해결합니다.

Ex58.c의 에러를 수정합니다.

   

   

소스코드

   

#include <stdio.h>

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

int main(void){
        int* p=NULL;    //
포인터변수는 4byte
        p=func( );              //
함수의 호출

        printf("%d %d %d %d %d\n", p[0], p[1], p[2], p[3], p[4]);
        printf("%d %d %d %d %d\n", *(p+0), *(p+1), *(p+2), *(p+3), *(p+4));

        return 0;
}

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

        static int array[ ]={10, 20, 30, 40, 50};       // static
키워드를 붙여줌
        return array;   //
경고 없어짐
}


   

   

출력결과

정상 출력 확인