함수 인수전달 질문입니다
글쓴이: dolsae2 / 작성시간: 화, 2010/10/05 - 6:43오후
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]); }
Forums:
insert 함수에서
insert 함수에서 만들어진 배열은 함수가 리턴되면서 소멸됩니다.
insert 함수에서 arr 를 리턴하지만, 그 순간 arr[3] 은 사라져 버렸기 때문에 리턴된 포인터는 의미가 없어지게 되죠.
main 함수에서 배열을 만들고 그 주소를 insert 로 넘겨 주어야 해요.
void insert(int *a)
{...}
main 에서
int arr[3];
insert[arr];
작은 오타이신듯....
작은 오타이신듯.... 하지만 질문자님이 C를 배우신지 얼마 안된 듯 하여 남깁니다.
insert(arr); 을 말씀하신 듯 하네요.
그렇네요
참고로 꼭 insert 함수 내에서 배열을 만들어 사용해야 한다면 static int arr[3] 를 쓸 수 있습니다.
댓글 달기