swap 함수 사용하려고 하는데 (간단한코드이니 답변좀 ㅠㅠ)
조회수 1444회
include
void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; return *x, *y; } int main() { int a=10, b=20; swap(a, b); printf("a: %d, b: %d", a, b); } 이거 실행하면 오류나는데 왜그럴까요 ㅠㅠ
1 답변
-
#include <stdio.h> void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; return *x, *y; } int main() { int a=10, b=20; swap(a, b); printf("a: %d, b: %d", a, b); }
어디서부터 이야기를 풀어야할지 난감하군요.
일단 수학에서 함수란 입력 X값에 반환되는 Y값은 1개입니다.
2개가 리턴된다면 함수가 아닙니다.
간혹 파이썬 같은 언어의 경우 꼭 2개 이상이 리턴되는 것으로 보이지만 그것은 1개의 tuple 이 리턴되는 겁니다.
c 언어는 튜틀 같은 것이 없으르로 2개이상의 값을 리턴하고 싶다면 구조체를 이용하여 1개의 값(구조체)을 리턴해야 합니다.
즉
void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; return *x, *y; }
에서
void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; }
와 같이 되어야 합니다.
그리고 main 함수도 아래와 같이 포인터가 대입되어야 합니다.
int main() { int a=10, b=20; swap(&a, &b); // swap 함수는 포인터를 대입해야 합니다. printf("a: %d, b: %d", a, b); }
정리하면 아래와 같이 되어야 합니다.
void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } int main() { int a=10, b=20; swap(&a, &b); // swap 함수는 포인터를 대입해야 합니다. printf("a: %d, b: %d", a, b); }
댓글 입력