함수 인수전달 질문입니다
글쓴이: 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] 를 쓸 수 있습니다.
댓글 달기