함수 인수전달 질문입니다

dolsae2의 이미지

 
int insert()
{
         int arr[3];
         printf("숫자를 입력하세요.(ex)1 2 3 : ");
         scanf("%d %d %d",&arr[0],&arr[1],&arr[2]);
 
}

이런식으로 insert란 함수를 만들었습니다

그리고 main()에서...

insert함수에서 각각 배열에 저장한 숫자를 출력해보고자 한다면 어떤식으로 해야는지요??

이렇게도 해보아도 안되네요

int *insert() // 포인터 타입의 리턴
{
         int arr[3];  
         printf("숫자를 입력하세요.(ex)1 2 3 : ");
         scanf("%d %d %d",&arr[0],&arr[1],&arr[2]);
 
         return arr;  // arr 리턴
}
int main {
   int* a;  // 포인터 변수를 만들고
   a = insert();  // insert함수의 리턴값을 저장하도록 합니다.
   printf("%d %d %d", a[0], a[1], [2]);
}

ifree의 이미지

insert 함수에서 만들어진 배열은 함수가 리턴되면서 소멸됩니다.
insert 함수에서 arr 를 리턴하지만, 그 순간 arr[3] 은 사라져 버렸기 때문에 리턴된 포인터는 의미가 없어지게 되죠.
main 함수에서 배열을 만들고 그 주소를 insert 로 넘겨 주어야 해요.

void insert(int *a)
{...}

main 에서

int arr[3];

insert[arr];

yoojioh의 이미지

작은 오타이신듯.... 하지만 질문자님이 C를 배우신지 얼마 안된 듯 하여 남깁니다.

insert(arr); 을 말씀하신 듯 하네요.

ifree의 이미지

참고로 꼭 insert 함수 내에서 배열을 만들어 사용해야 한다면 static int arr[3] 를 쓸 수 있습니다.