ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ“Œ ์ธ์ž์ „๋‹ฌ์˜ ๊ธฐ๋ณธ๋ฐฉ์‹์€ ๊ฐ’์˜ ๋ณต์‚ฌ์ด๋‹ค 

 

๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ ๋ฐฉ๋ฒ•์€ 1) ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ (Call by value) ์™€ 2) ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ (Call by reference)๋กœ ๋‚˜๋‰œ๋‹ค.

๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ์€ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์—์„œ ์ž”๋‹ฌํ•œ ์ธ์ž์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ํ˜ธ์ถœ๋ฐ›์€ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฆ‰, ํ˜ธ์ถœํ•œ ๊ณณ์˜ ์ธ์ž์™€ ํ”ผํ˜ธ์ถœํ•œ ๊ณณ์˜ ์ธ์ž์˜ ๊ฐ’์€ ๊ฐ™์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋…๋ฆฝ์ ์ด๋‹ค.

 

๋ฐ˜๋ฉด ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ์€ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์—์„œ ์ „๋‹ฌํ•œ ์ธ์ž๋ฅผ ํ”ผํ˜ธ์ถœ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฆ‰, ํ˜ธ์ถœํ•œ ๊ณณ์˜ ์ธ์ž์™€ ํ”ผํ˜ธ์ถœํ•œ ๊ณณ์˜ ์ธ์ž๋Š” ๊ฐ™์€ ๊ฐœ์ฒด์ด๋‹ค. 

 

C์–ธ์–ด์—์„œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์€ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ (call by value)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์†Œ์— ์˜ํ•œ ํ˜ธ์ถœ(call by memory)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ์ฃผ์†Œ์— ์˜ํ•œ ํ˜ธ์ถœ๋„ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’์ด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์ธ ๊ฒƒ์ด๋ฏ€๋กœ ์ด ๋˜ํ•œ ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ ๋ฐฉ์‹์ด๋‹ค. 

 

๋ฐฐ์—ด์„ ํ†ต์งธ๋กœ ๋„˜๊ฒจ๋ฐ›์œผ๋ ค๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐฐ์—ด์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‚˜, ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์„ ๋„˜๊ฒจ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผํ•œ๋‹ค. 

 

ํ•จ์ˆ˜ ๋‚ด์—์„œ ์™ธ๋ถ€์— ์„ ์–ธ๋œ ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์‹œ

#include <stdio.h>

void ShowArayElem(int *param,int len) // ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์†Œ๊ฐ’ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ! ๋ฐฐ์—ด์˜ ๊ธธ์ด์ •๋ณด๋„ ๋ฐ›๊ธฐ
{
	int i;
	for (i = 0; i < len; i++)
	{
		printf("%d ", param[i]); // int ํ˜• ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ๋Œ€์ƒ์œผ๋กœ ๋ฐฐ์—ดํ˜•ํƒœ์˜ ์ ‘๊ทผ ์ง„ํ–‰
	}
	printf("\n");
}


int main()
{
	int arr1[3] = { 1,2,3 }; 
	int arr2[5] = { 4,5,6,7,8 };
	ShowArayElem(arr1, sizeof(arr1) / sizeof(int));
	ShowArayElem(arr2, sizeof(arr2) / sizeof(int));
	return 0;

}

 

ํ•จ์ˆ˜ ๋‚ด์—์„œ ์™ธ๋ถ€์— ์„ ์–ธ๋œ ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’ ๋ณ€๊ฒฝ

#include <stdio.h>

void ShowArayElem(int* param, int len) // ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ•จ์ˆ˜
{
	int i;
	for (i = 0; i < len; i++)
		printf("%d", param[i]);
	printf("\n");
}

void AddArayElem(int* param, int len, int add) // ๋ฐฐ์—ด์˜ ์š”์†Œ์— ํ•ฉ์„ ํ•˜๋Š” ํ•จ์ˆ˜
{
	int i;
	for (i = 0; i < len; i++)
		param[i] = param[i] + add;
}
int main()
{
	int arr[3] = { 1,2,3 };

	AddArayElem(arr, sizeof(arr) / sizeof(int), 1);
	ShowArayElem(arr, sizeof(arr) / sizeof(int));

	AddArayElem(arr, sizeof(arr) / sizeof(int), 2);
	ShowArayElem(arr, sizeof(arr) / sizeof(int));

	
	AddArayElem(arr, sizeof(arr) / sizeof(int), 3);
	ShowArayElem(arr, sizeof(arr) / sizeof(int));
	return 0;
}
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/07   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ