윤성우의 열혈 C 프로그래밍 - Call-by-value & Call-by-reference [14-1]

Yumin Jung·2023년 7월 31일
0

14-1-1

제곱을 구하는 프로그램이다.
두 가지의 문제를 제시했다. 첫번째는 Call-by-value 형태의 프로그램, 두번째는 Call-by-reference 형태의 프로그램을 나타내어야 한다.

Call-by-value 형태

#include <stdio.h>

int SquareByValue(int n) {
	int value;
	value = n * n;
	return value;
}

int main(void) {
	int num;
	printf("제곱 계산하는 프로그램입니다. 숫자를 입력하세요: ");
	scanf_s("%d", &num);
	printf("제곱의 값은 : %d", SquareByValue(num));

	return 0;
}

Call-by-reference 형태

#include <stdio.h>

int SquareByReference(int * ptr) {

	*ptr *= *ptr;

}

int main(void) {
	int num;
	printf("제곱 계산하는 프로그램입니다. 숫자를 입력하세요: ");
	scanf_s("%d", &num);
	SquareByReference(&num);
	printf("제곱의 값은 : %d ", num);

	return 0;
}

14-1-2

#include <stdio.h>

int Swap3(int* ptr1, int*ptr2, int*ptr3){
	int temp1=0, temp2=0;
	temp1 = *ptr1;
	temp2 = *ptr2;
	*ptr1 = *ptr3;
	*ptr2 = temp1;
	*ptr3 = temp2;

	return *ptr1, * ptr2, * ptr3;
}
int main(void) {
	int num1, num2, num3;
	printf("스왑 함수를 사용할 세 개의 숫자를 차례로 입력하세요 : ");
	scanf_s("%d %d %d", &num1, &num2, &num3);
	Swap3(&num1, &num2, &num3);
	printf("결과는 %d %d %d", num1, num2, num3);
	return 0;
}

Swap 함수 인자가 세개라고 temp를 두개 만들면 될 줄 알았는데 2개를 만들어도 구현이 가능했다.

int temp = *ptr3;
*ptr3 = *ptr2;
*ptr2 = *ptr1;
*ptr1 = temp;
profile
문과를 정말로 존중해

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

많은 도움이 되었습니다, 감사합니다.

답글 달기