[C] ํฌ์ธํ„ฐ | ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ | ์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ | clock() | ํ˜•์‹ ํƒœํฌ

2023. 10. 12. 23:33ยท ๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ/๐ŸŽญ C

int ์ฒ ์ˆ˜ = 1;

๋ฉ”๋ชจ๋ฆฌ์— ์ฒ ์ˆ˜๋ผ๋Š” ๊ณต๊ฐ„์ด ์ƒ๊ธด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒ ์ˆ˜๋ผ๋Š” ๊ณต๊ฐ„์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 101ํ˜ธ๋ผ๊ณ  ์ฝ์ง€๋งŒ, ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋Š” ์–ด๋–ค ๊ฐ’์ผ์ง€ ๋ชจ๋ฅธ๋‹ค. ์ฃผ์†Œ๊ฐ’์„ ์•Œ์•„๋‚ด๋ ค๋ฉด ๋ณ€์ˆ˜๋ช… ์•ž์— &๋ฅผ ๋ถ™์—ฌ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. 

์ฃผ์†Œ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์„œ์‹์ง€์ •์ž %d ๋Œ€์‹  %p (ํฌ์ธํ„ฐ)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ 16์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

#include <stdio.h>

int main(void) {
	int ์ฒ ์ˆ˜ = 1;
	int ์˜ํฌ = 2;
	int ๋ฏผ์ˆ˜ = 3;

	printf("์ฒ ์ˆ˜๋„ค ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &์ฒ ์ˆ˜, ์ฒ ์ˆ˜);
	printf("์˜ํฌ๋„ค ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &์˜ํฌ, ์˜ํฌ);
	printf("๋ฏผ์ˆ˜๋„ค ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &๋ฏผ์ˆ˜, ๋ฏผ์ˆ˜);
	
	return 0;
}

์ฃผ์†Œ๊ฐ’์€ ๋ณ€์ˆ˜ ์ฒ ์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–ด๋А ์œ„์น˜์— ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ

 

๋ณ€์ˆ˜ ์•ž์— *๋ฅผ ๋ถ™์–ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ๋˜๋Š” ํฌ์ธํ„ฐ๋ผ ํ•œ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜.

์ž๋ฃŒํ˜• * ๋ณ€์ˆ˜๋ช…;

#include <stdio.h>

int main(void) {
	int ์ฒ ์ˆ˜ = 1;
	int ์˜ํฌ = 2;
	int ๋ฏผ์ˆ˜ = 3;

	int * ๋ฏธ์…˜๋งจ;
	๋ฏธ์…˜๋งจ = &์ฒ ์ˆ˜;

	printf("๋ฏธ์…˜๋งจ์ด ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ๋ฏธ์…˜๋งจ, *๋ฏธ์…˜๋งจ);
	
	return 0;
}

 

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ์™€ ๊ฐ’์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์•Œ์•„๋‚ธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ์— ์ฐพ์•„๊ฐ€ ๊ฐ’๋„ ์ง์ ‘ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

#include <stdio.h>

int main(void) {
	int ์ฒ ์ˆ˜ = 1;
	int ์˜ํฌ = 2;
	int ๋ฏผ์ˆ˜ = 3;

	int * ๋ฏธ์…˜๋งจ;
	๋ฏธ์…˜๋งจ = &์ฒ ์ˆ˜;
	*๋ฏธ์…˜๋งจ = *๋ฏธ์…˜๋งจ * 3;
	printf("๋ฏธ์…˜๋งจ์ด ์•”ํ˜ธ๋ฅผ ๋ฐ”๊พผ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &์ฒ ์ˆ˜, ์ฒ ์ˆ˜);
	return 0;
}

 

int * ์ŠคํŒŒ์ด = ๋ฏธ์…˜๋งจ;

์ŠคํŒŒ์ด๋Š” ๋ฏธ์…˜๋งจ์ด ์•Œ์•„๋‚ธ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ง‘ ์ฃผ์†Œ๋ฅผ ๋˜‘๊ฐ™์ด ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ 2๊ฐœ๋Š” ๊ฐ™์€ ์ฃผ์†Œ, ์ฆ‰ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋กœ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ํ•ด๋‹น ์ฃผ์†Œ์— ๊ฐ€์„œ ์ €์žฅํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

#include <stdio.h>

int main(void) {
	int ์ฒ ์ˆ˜ = 1;
	int ์˜ํฌ = 2;
	int ๋ฏผ์ˆ˜ = 3;

	int * ๋ฏธ์…˜๋งจ;
	๋ฏธ์…˜๋งจ = &์ฒ ์ˆ˜;
	*๋ฏธ์…˜๋งจ = *๋ฏธ์…˜๋งจ * 3;
	
	int * ์ŠคํŒŒ์ด = ๋ฏธ์…˜๋งจ;
	*์ŠคํŒŒ์ด = *์ŠคํŒŒ์ด - 1; // ์ฒ ์ˆ˜ = ์ฒ ์ˆ˜ - 1;
	printf("์ŠคํŒŒ์ด๊ฐ€ ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ์ŠคํŒŒ์ด, *์ŠคํŒŒ์ด);

	return 0;
}

 

๊ทธ๋ ‡๊ฒŒ  ๋ฐ”๋€ ์•”ํ˜ธ

๋”๋ณด๊ธฐ
#include <stdio.h>

int main(void) {
	int ์ฒ ์ˆ˜ = 1;
	int ์˜ํฌ = 2;
	int ๋ฏผ์ˆ˜ = 3;

	printf("์ฒ ์ˆ˜์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &์ฒ ์ˆ˜, ์ฒ ์ˆ˜);
	printf("์˜ํฌ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &์˜ํฌ, ์˜ํฌ);
	printf("๋ฏผ์ˆ˜์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &๋ฏผ์ˆ˜, ๋ฏผ์ˆ˜);

	int * ๋ฏธ์…˜๋งจ;
	int * ์ŠคํŒŒ์ด;

	๋ฏธ์…˜๋งจ = &์ฒ ์ˆ˜;
	*๋ฏธ์…˜๋งจ = *๋ฏธ์…˜๋งจ * 3;
	์ŠคํŒŒ์ด = ๋ฏธ์…˜๋งจ;
	*์ŠคํŒŒ์ด = *์ŠคํŒŒ์ด - 1;
	printf("๋ฏธ์…˜๋งจ์ด ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ๋ฏธ์…˜๋งจ, *๋ฏธ์…˜๋งจ);
	printf("์ŠคํŒŒ์ด๊ฐ€ ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ์ŠคํŒŒ์ด, *์ŠคํŒŒ์ด);

	๋ฏธ์…˜๋งจ = &์˜ํฌ;
	*๋ฏธ์…˜๋งจ = *๋ฏธ์…˜๋งจ * 3;
	์ŠคํŒŒ์ด = ๋ฏธ์…˜๋งจ;
	*์ŠคํŒŒ์ด = *์ŠคํŒŒ์ด - 1;
	printf("๋ฏธ์…˜๋งจ์ด ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ๋ฏธ์…˜๋งจ, *๋ฏธ์…˜๋งจ);
	printf("์ŠคํŒŒ์ด๊ฐ€ ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ์ŠคํŒŒ์ด, *์ŠคํŒŒ์ด);

	๋ฏธ์…˜๋งจ = &๋ฏผ์ˆ˜;
	*๋ฏธ์…˜๋งจ = *๋ฏธ์…˜๋งจ * 3;
	์ŠคํŒŒ์ด = ๋ฏธ์…˜๋งจ;
	*์ŠคํŒŒ์ด = *์ŠคํŒŒ์ด - 1;
	printf("๋ฏธ์…˜๋งจ์ด ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ๋ฏธ์…˜๋งจ, *๋ฏธ์…˜๋งจ);
	printf("์ŠคํŒŒ์ด๊ฐ€ ๋ฐฉ๋ฌธํ•œ ๊ณณ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", ์ŠคํŒŒ์ด, *์ŠคํŒŒ์ด);

	printf("์ฒ ์ˆ˜์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &์ฒ ์ˆ˜, ์ฒ ์ˆ˜);
	printf("์˜ํฌ์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &์˜ํฌ, ์˜ํฌ);
	printf("๋ฏผ์ˆ˜์˜ ์ฃผ์†Œ : %p, ์•”ํ˜ธ : %d\n", &๋ฏผ์ˆ˜, ๋ฏผ์ˆ˜);

	return 0;
}

 

๋ฏธ์…˜๋งจ๊ณผ ์ŠคํŒŒ์ด ๊ฐ™์€ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ์–ด๋–ค ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ง์ ‘ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ, ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์ธ ๋ฏธ์…˜๋งจ๊ณผ ์ŠคํŒŒ์ด๋„ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค. ๋‘ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ ๊ฐ€๋Šฅ.

printf("๋ฏธ์…˜๋งจ์˜ ์ฃผ์†Œ : %p\n", &๋ฏธ์…˜๋งจ);
printf("์ŠคํŒŒ์ด์˜ ์ฃผ์†Œ : %p\n", &์ŠคํŒŒ์ด);

 

๋ฌธ์ œ

int a = 10;
int * p = &a;
a = 15;
printf("%d\n", *p);
๋”๋ณด๊ธฐ

*p = 15;

 

p ๋Š” a์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 10์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ a์˜ ์ฃผ์†Œ. ๋”ฐ๋ผ์„œ, *p๋Š” a ๋ณ€์ˆ˜์˜ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€ *p์™€ a๊ฐ€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ. ๋”ฐ๋ผ์„œ a์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด *p๋„ ๋ณ€๊ฒฝ๋œ๋‹ค.

 

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ๋ฐฐ์—ด์„ ๊ฐ’์œผ๋กœ ๋„ฃ์œผ๋ฉด ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ฃผ์†Œ, ์ฆ‰ ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ์‹œ์ž‘ ์ฃผ์†Œ๋กœ ๋ฐฐ์—ด์— ์ ‘๊ทผํ•ด ์š”์†Œ์˜  ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ์ง์ ‘ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. 

#include <stdio.h>

int main(void) {
	int arr[3] = { 5,10,15 };
	for (int i = 0; i < 3; i++) {
		printf("๋ฐฐ์—ด arr[%d]์˜ ๊ฐ’ : %d\n", i, arr[i]);
	}

	int* ptr = arr;
	for (int i = 0; i < 3; i++) {
		printf("ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ptr[%d]์˜ ๊ฐ’ : %d\n", i, ptr[i]);
	}

	ptr[0] = 100;
	ptr[1] = 200;
	ptr[2] = 300;

	for (int i = 0; i < 3; i++) {
		printf("๋ฐฐ์—ด arr[%d]์˜ ๊ฐ’ : %d\n", i, arr[i]);
	}
	for (int i = 0; i < 3; i++) {
		printf("ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ptr[%d]์˜ ๊ฐ’ : %d\n", i, ptr[i]);
	}

	return 0;
}

 

int * ptr = arr; (O)

int arr[3] = ptr; (X)

 

printf("๋ฐฐ์—ด arr[%d]์˜ ๊ฐ’ : %d\n", i, arr[i]);
printf("๋ฐฐ์—ด arr[%d]์˜ ๊ฐ’ : %d\n", i, *(arr + i));

์œ„ ๋‘ ์ถœ๋ ฅ๋ฌธ์€ ๊ฐ™์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ฌธ๋ฒ•์ ์œผ๋กœ ์™„์ „ํžˆ ๊ฐ™์€ ๋ฌธ์žฅ. ptr[i] = *(ptr + i)

arr์€ arr๋ฐฐ์—ด์ด ์‹œ์ž‘๋˜๋Š” ์ฃผ์†Œ, ์ฆ‰ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. arr[i]๋Š” ๋ฐฐ์—ด ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ฃผ์†Œ๋กœ๋ถ€ํ„ฐ i๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์˜๋ฏธ

 

arr == &arr[0];

arr์˜ ๊ฐ’์€ arr ๋ฐฐ์—ด ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ฃผ์†Œ์™€ ๊ฐ™์Œ

 

*(arr + i) == arr[i];

arr์—์„œ i๋งŒํผ ๋–จ์–ด์ง„ ๊ณณ์— ์ €์žฅ๋œ ๊ฐ’๊ณผ arr๋ฐฐ์—ด์˜ i์ธ๋ฑ์Šค ๊ฐ’์€ ๊ฐ™์Œ

0์€ ์ƒ๋žตํ•ด๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์—, *arr = arr[0]

 

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ptr์— arr์„ ๋„ฃ์œผ๋ฉด ptr๋„ arr ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๋ฏ€๋กœ ๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ ‘๊ทผํ•ด ๊ฐ’์„ ์ฝ์–ด ์˜ค๊ฑฐ๋‚˜ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. 

 

#include <stdio.h>

int main(void) {
	int arr[3] = { 5,10,15 };
	for (int i = 0; i < 3; i++) {
		printf("๋ฐฐ์—ด arr[%d]์˜ ๊ฐ’ : %d\n", i, arr[i]);
	}

	int* ptr = arr;
	for (int i = 0; i < 3; i++) {
		printf("ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ptr[%d]์˜ ๊ฐ’ : %d\n", i, ptr[i]);
	}

	ptr[0] = 100;
	ptr[1] = 200;
	ptr[2] = 300;

	printf("arr ์ž์ฒด์˜ ๊ฐ’์ธ ์ฃผ์†Œ์˜ ์‹ค์ œ ๊ฐ’ : %d\n", *arr);
	printf("arr[0]์˜ ์‹ค์ œ ๊ฐ’ : %d\n", *&arr[0]);

	return 0;
}

 

 

 

*๊ณผ &๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ

arr[0]์˜ ์‹ค์ œ ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ, *&arr[0]์ด๋ผ๊ณ  ์ž‘์„ฑํ•จ. &๋Š” ์ฃผ์†Œ, *์€ ์ฃผ์†Œ์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์—, ๋‘˜์€ ์ƒ์‡„๋œ๋‹ค.

 

 

ํฌ์ธํ„ฐ๋กœ ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ’ ๊ตํ™˜ํ•˜๊ธฐ

1. ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ(call by value) : ์ฃผ์†Œ๊ฐ€ ๋™์ผํ•˜์ง€ ์•Š๋‹ค.

#include <stdio.h>

void swap(int a, int b);

int main(void) {
	int a = 10;
	int b = 20;
	printf("swap() ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „ => a : %d, b : %d\n", a, b);
	swap(a, b);
	printf("swap() ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ => a : %d, b : %d\n", a, b);

	return 0;
}

void swap(int a, int b) {
	int temp = a;
	a = b;
	b = temp;
	printf("swap() ํ•จ์ˆ˜ ์•ˆ => a : %d, b : %d\n", a, b);
}

 

 

2. ์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ(call by reference) : ์ฃผ์†Œ๊ฐ€ ๋™์ผํ•˜๋‹ค.

int main(void) {
	int a = 10;
	int b = 20;
	printf("a์˜ ์ฃผ์†Œ : %p\n", &a);
	printf("b์˜ ์ฃผ์†Œ : %p\n", &b);

	printf("swap_addr() ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „ => a : %d, b : %d\n", a, b);
	swap_addr(&a, &b);
	printf("swap_addr() ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ => a : %d, b : %d\n", a, b);

	return 0;
}

void swap_addr(int * a, int * b){
	printf("swap_addr() ํ•จ์ˆ˜ ์•ˆ์—์„œ a์˜ ์ฃผ์†Œ : %p\n", a);
	printf("swap_addr() ํ•จ์ˆ˜ ์•ˆ์—์„œ b์˜ ์ฃผ์†Œ : %p\n", b);
	int temp = *a;
	*a = *b;
	*b = temp;
	printf("swap_addr() ํ•จ์ˆ˜ ์•ˆ => a : %d, b : %d\n", *a, *b);
}

 

 

ํฌ์ธํ„ฐ๋กœ ๋ฐฐ์—ด์˜ ๊ฐ’ ๋ฐ”๊พธ๊ธฐ

๋ฐฐ์—ด๋ช… = ๋ฐฐ์—ด์˜ ์‹œ์ž‘์ฃผ์†Œ = &arr2[0]

void changeArray(int* ptr);

int main(void) {
	int arr2[3] = { 10, 20, 30 };
	changeArray(arr2);
    changeArray(&arr2[0]); // ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ (์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ฃผ์†Œ) ์ „๋‹ฌ
	for (int i = 0; i < 3; ++i) {
		printf("%d\n", arr2[i]);
	}

	return 0;
}

void changeArray(int* ptr) {
	ptr[2] = 50;
}

 

๋ฐฐ์—ด์€ ์—ฐ์†๋œ ๊ณต๊ฐ„์— ํ• ๋‹นํ•˜๋ฏ€๋กœ ์ฃผ์†Œ๊ฐ€ ์—ฐ์†๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ์ธ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์‹ฒ๊ฐ€ ์ฃผ์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ง€์ •ํ•œ ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฌผ๊ณ ๊ธฐ ํ‚ค์šฐ๊ธฐ ๊ฒŒ์ž„

๋”๋ณด๊ธฐ

clock() : ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ์‹œ์ž‘ ์‹œ์ ๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ํ๋ฅธ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

 

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int level;
int arrayFish[6];
int* cursor; // ์–ดํ•ญ ๋ฐฐ์—ด์— ์ ‘๊ทผํ•  ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์„ ์–ธ

void initData();
void printfFishes();
void decreaseWater(long elapsedTime);
int checkFishAlive();

int main(void) {
	long startTime = 0; // ๊ฒŒ์ž„ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ๋‹ด์„ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”
	int num;
	long totalElapsedTime = 0; // ์ด ๊ฒฝ๊ณผ์‹œ๊ฐ„
	long prevElapsedTime = 0; // ์ง์ „์— ๋ฌผ์„ ์ค€ ์‹œ๊ฐ„ (๋ฌผ์„ ์ค€ ๊ฐ„๊ฒฉ)

	initData();
	startTime = clock();
	cursor = arrayFish; // ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ์–ดํ•ญ ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ ๋„ฃ๊ธฐ

	while (1) {
		printfFishes();
		printf("๋ช‡ ๋ฒˆ ์–ดํ•ญ์— ๋ฌผ์„ ์ค„๊นŒ์š”? (1-6) ");
		scanf_s("%d", &num);

		if (num < 1 || num > 6) {
			printf("\n์ž…๋ ฅ๊ฐ’์ด ์ž˜๋ชป๋์Šต๋‹ˆ๋‹ค.\n");
			continue;
		}

		totalElapsedTime = (clock() - startTime) / CLOCKS_PER_SEC; // ์ด ๊ฒฝ๊ณผ ์‹œ๊ฐ„ (์ดˆ ๋‹จ์œ„๋กœ ํ‘œ์‹œ)
		printf("์ด ๊ฒฝ๊ณผ ์‹œ๊ฐ„ : %ld์ดˆ\n", totalElapsedTime);
		prevElapsedTime = totalElapsedTime - prevElapsedTime; // ์ง์ „์— ๋ฌผ ์ค€ ์‹œ๊ฐ„ ์ดํ›„๋กœ ํ๋ฅธ ์‹œ๊ฐ„
		printf("์ตœ๊ทผ ๊ฒฝ๊ณผ ์‹œ๊ฐ„ : %ld์ดˆ\n", prevElapsedTime);

		decreaseWater(prevElapsedTime);
		if (cursor[num - 1] <= 0) {
			printf("%d๋ฒˆ ์–ดํ•ญ์˜ ๋ฌผ๊ณ ๊ธฐ๋Š” ์ด๋ฏธ ์ฃฝ์—ˆ์œผ๋ฏ€๋กœ ๋ฌผ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค\n", num);
		}
		else if (cursor[num - 1] + 1 <= 100) {
			printf("%d๋ฒˆ ์–ดํ•ญ์— ๋ฌผ์„ ์ค๋‹ˆ๋‹ค\n\n", num);
			// ๋ฌผ์„ ์ฃผ๋ฉด ๋ฌผ ๋†’์ด + 1(cursor[num-1] = cursor[num -1] + 1)
			cursor[num - 1] += 1;
		}

		if (totalElapsedTime / 20 > level - 1) { // ๋ ˆ๋ฒจ์—… ํ™•์ธ(20์ดˆ๋งˆ๋‹ค ํ•œ ๋ฒˆ์”ฉ ์ˆ˜ํ–‰. ๋ชซ์„ ํ™•์ธ)
			level++;
			printf("***์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค. %d๋ ˆ๋ฒจ์—์„œ %d๋ ˆ๋ฒจ๋กœ ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. *** \n\n", level - 1, level);

			if (level == 5) {
				printf("\n\n์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ณ  ๋ ˆ๋ฒจ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. \n\n");
				exit(0);
			}
		}

		if (checkFishAlive() == 0) {
			printf("๋ชจ๋“  ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์ฃฝ์—ˆ์Šต๋‹ˆ๋‹ค. ใ… ใ…  \n\n");
			exit(0);
		}
		else {
			printf("๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์•„์ง ์‚ด์•„์žˆ์–ด์š”!\n\n");
		}

		prevElapsedTime = totalElapsedTime;
	}
	return 0;
}

void initData() {
	level = 1; // ๋ ˆ๋ฒจ ์ดˆ๊ธฐํ™” (๋ ˆ๋ฒจ ๋ฒ”์œ„ 1~5)
	for (int i = 0; i < 6; ++i) {
		arrayFish[i] = 100; // ์–ดํ•ญ ๋ฌผ ๋†’์ด ์ดˆ๊ธฐํ™” (๋ฌผ ๋†’์ด ๋ฒ”์œ„ 0~100)
	}
}

void printfFishes() { // ์–ดํ•ญ ๋ฌผ ๋†’์ด ์ถœ๋ ฅ ํ•จ์ˆ˜ ์ •์˜
	printf("%3d๋ฒˆ %3d๋ฒˆ %3d๋ฒˆ %3d๋ฒˆ %3d๋ฒˆ %3d๋ฒˆ\n", 1, 2, 3, 4, 5, 6);
	for (int i = 0; i < 6; ++i) {
		printf("  %3d ", arrayFish[i]); // ์„œ์‹ ์ง€์ •์ž๋กœ ์ถœ๋ ฅ ๊ฒฐ๊ณผ ์ •๋ ฌ
	}
	printf("\n\n");
}

void decreaseWater(long elapsedTime) { // ์–ดํ•ญ์˜ ๋ฌผ์„ ์ฆ๋ฐœ(๊ฐ์†Œ)์‹œํ‚ค๋Š” ํ•จ์ˆ˜ ์ •์˜
	for (int i = 0; i < 6; ++i) {
		arrayFish[i] -= (level * 3 * (int)elapsedTime);

		if (arrayFish[i] < 0) {
			arrayFish[i] = 0;
		}
	}
}

int checkFishAlive() { // ๋ชจ๋“  ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์ฃฝ์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
	for (int i = 0; i < 6; ++i) {
		if (arrayFish[i] > 0) {
			return 1; // ์ฐธ(true)
		}
	}

	return 0;
}

 

์„œ์‹ ์ง€์ •์ž์˜ ํ˜•์‹ ํƒœ๊ทธ

printfFishes() ํ•จ์ˆ˜์—์„œ ์„œ์‹ ์ง€์ •์ž์— ๋„ฃ๋Š” ์ˆซ์ž 3์€ ์„œ์‹ ์ง€์ •์ž์— ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹ ํƒœ๊ทธ์˜ ํ•˜๋‚˜.

์ด ์ˆซ์ž๋Š” ์ถœ๋ ฅํ•  ๊ฐ’์˜ ํญ ๋˜๋Š” ๋„ˆ๋น„๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์ž๋ฆฟ์ˆ˜๋ผ๊ณ  ๋ณด๋ฉด ๋จ. 3์„ ๋„ฃ์œผ๋ฉด 3์ž๋ฆฌ๋กœ ์ง€์ •ํ•œ๋‹ค.

๋งŒ์•ฝ ์ถœ๋ ฅํ•  ๊ฐ’์ด ์ง€์ •ํ•œ ๋„ˆ๋น„๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ž๋ฆฟ์ˆ˜๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๋นˆ์นธ์œผ๋กœ ์ฑ„์šด๋‹ค.

๋˜ํ•œ, %03d์™€ ๊ฐ™์ด % ๋’ค์— 0์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋นˆ์นธ ๋Œ€์‹  0์œผ๋กœ ์ฑ„์šด๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•ด์„œ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•˜๋‹ค.

 

์ง์ˆ˜๋งŒ ์ œ๊ณฑํ•˜๋Š” ์˜ˆ์‹œ

๋”๋ณด๊ธฐ
#include <stdio.h>

void square(int* a);

int main(void) {
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

	for (int i = 0; i < 10; ++i) {
		square(&arr[i]);
	}

	for (int i = 0; i < 10; ++i) {
		printf("  %3d ", arr[i]);
	}

	return 0;
}

void square(int* a) {
	if (*a % 2 == 0) {
		*a = *a * *a;
	}
}
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ > ๐ŸŽญ C' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C] ๊ตฌ์กฐ์ฒด | typedef  (1) 2024.01.01
[C] ๋‹ค์ฐจ์› ๋ฐฐ์—ด  (0) 2023.12.31
[C] ๋ฐฐ์—ด | null | sizeof() | ์•„์Šคํ‚ค์ฝ”๋“œ  (0) 2023.09.10
[C] ํ•จ์ˆ˜  (0) 2023.09.10
[C] ์กฐ๊ฑด๋ฌธ | ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ | switch๋ฌธ  (1) 2023.09.06
'๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ/๐ŸŽญ C' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C] ๊ตฌ์กฐ์ฒด | typedef
  • [C] ๋‹ค์ฐจ์› ๋ฐฐ์—ด
  • [C] ๋ฐฐ์—ด | null | sizeof() | ์•„์Šคํ‚ค์ฝ”๋“œ
  • [C] ํ•จ์ˆ˜
peewoong
peewoong
peewoong.logpeewoong ๋‹˜์˜ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
peewoong
peewoong.log
peewoong
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๐Ÿ™‚ Info
    • ๐ŸŽฎ ๊ฒŒ์ž„ ๊ด€๋ จ ๊ฐœ๋…
    • ๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ๐ŸŽญ C
      • ๐ŸŽ  C++
      • ๐Ÿ• C#
      • โœจ ์ž๋ฃŒ๊ตฌ์กฐ
      • ๐ŸŽ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • ๐Ÿ”ข ์ˆ˜ํ•™
      • ๐ŸŽจ ๊ทธ๋ž˜ํ”ฝ์Šค
    • โš™๏ธ ์—”์ง„
      • ๐Ÿง€ VS
      • ๐Ÿค ์œ ๋‹ˆํ‹ฐ
      • ๐Ÿซ ์–ธ๋ฆฌ์–ผ
      • ๐Ÿน DirectX
      • ๐Ÿฆฅ error
    • ๐Ÿ“ฝ๏ธ ํ”„๋กœ์ ํŠธ
    • ๐Ÿง ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.0
peewoong
[C] ํฌ์ธํ„ฐ | ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ | ์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ | clock() | ํ˜•์‹ ํƒœํฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.