C언어 매개변수에 대해서 질문이요
글쓴이: 윤영주@Google / 작성시간: 화, 2017/05/23 - 7:30오후
유클리드 호제법 공부하다가 좀 이해가 안되서 질문드립니다.
#include<stdio.h> int input() { int num; scanf("%d",&num); return num; } void output1(int num1, int num2) { printf("%d %d \n", num1, num2); //2 3 } void output2(int num2, int num1) { printf("%d %d \n", num1, num2); //3 2 } void output3(int num1, int num2) { printf("%d %d \n", num2, num1); //3 2 } void output4(int num2, int num1) { printf("%d %d \n", num2, num1); //2 3 } int main() { int num1, num2; num1 = input(); num2 = input(); printf("\n\n\n\n"); output1(num1, num2); output2(num1, num2); output3(num1, num2); output4(num1, num2); return 0; }
매개변수 값 a,b가 있으면 b,a로 놓든 a,b로 놓든 상관 없는줄만 알았는데 아니군요
매개변수와 반환 값 위치 둘중 하나는 고정시켜두고 코딩하는게 정답인건지 아니면 무슨 규칙이 있는건지 잘 모르겠습니다
도와주세요
Forums:
사람을 매우 혼란스럽게 만드는 코드로군요. 그러나
사람을 매우 혼란스럽게 만드는 코드로군요. 그러나 컴파일러는 조금도 혼동하지 않습니다.
함수 호출 시 매개변수는 호출하는 쪽(caller)에서 넣어준 순서대로 호출받는 쪽(callee)에 들어갑니다.
양쪽에서 어떤 이름의 변수를 쓰는지는 전혀 상관이 없습니다. 이름이 겹치든 안 겹치든 상관 없습니다.
이름이 겹치면 헷갈려하는 건 사람이고 묵묵히 제 할 일을 하는 건 컴파일러입니다.
printf도 마찬가지. 따로 조작하지 않았다면 매개변수로 넣어준 순서대로 출력해줍니다.
너무 감사드립니다
한방에 이해가 가네요 감사합니다!!
댓글 달기