C์–ธ์–ด์˜ ๊ฝƒ๐ŸŒน(1)

@Super_E๋Œ๋ฆผยท2024๋…„ 3์›” 9์ผ
post-thumbnail

ํฌ์ธํ„ฐ

point : (์–ด๋– ํ•œ ๊ณต๊ฐ„)์ง€์  + er : ํ–‰๋™ โ‡’ ์–ด๋– ํ•œ ์ง€์ ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
์ฆ‰, ํฌ์ธํ„ฐ๋Š” ์–ด๋– ํ•œ ์ง€์ (์ฃผ์†Œ)์„ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
์ด๋Š” ๋ณ€์ˆ˜ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์ธ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๊ฐœ๋…์ด์ง€๋งŒ ์—ฌ๊ธฐ์— ํฌ์ธํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋Š” * ๊ธฐํ˜ธ๋ฅผ ๋”ํ•˜๋ฉด ์ด๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ๋˜์–ด ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

//[์ž๋ฃŒํ˜•]* [ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์ด๋ฆ„];
int* p;
char* pointer;
double* a;

์ผ๋ฐ˜ ๋ณ€์ˆ˜ ์„ ์–ธ์ฒ˜๋Ÿผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์ด๋ฆ„๋„ ์ž์œ ๋กญ๊ฒŒ ์ •ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ •ํ•˜๋Š”๋ฐ๋Š” ์•”๋ฌต์ ์ธ ๋ฃฐ์ด ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๋ณ€์ˆ˜ vs ํฌ์ธํ„ฐ ๋ณ€์ˆ˜

  • ์ผ๋ฐ˜ ๋ณ€์ˆ˜ : ์ž๋ฃŒํ˜•์— ๋”ฐ๋ฅธ ๊ฐ’์„ ์ €์žฅ
  • ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ : ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜์—ฌ ๊ทธ ์ฃผ์†Œ์— ์ฐธ์กฐํ•˜์—ฌ ์ €์žฅ๋œ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฐธ์กฐํ•˜๋ ค๋Š” ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ ๊ทธ๋ฆฌ๊ณ  ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์–ด์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์ฐธ์กฐ ๋‹นํ•˜๋Š”(?) ๋ณ€์ˆ˜์—๋Š” ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

// ์ฐธ์กฐ ๋‹นํ•˜๋Š” ๋ณ€์ˆ˜
1) ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”
int a = 10;

2) ์ž…๋ ฅ๋ฐ›๊ธฐ
int a;
scanf("%d",&a);

// ํฌ์ธํ„ฐ ๋ณ€์ˆ˜
1) ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋”ฐ๋กœ
int* p;//์„ ์–ธ or ์ •์˜
p = &a;//์ดˆ๊ธฐํ™”

2) ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋™์‹œ
int* p = &a;

C์–ธ์–ด๋Š” Top-Down ๋ฐฉ์‹์ด๊ธฐ์— ์ฐธ์กฐํ•  ๋ณ€์ˆ˜๊ฐ€ ๋จผ์ € ์„ ์–ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

*Top-Down : ์œ„์—์„œ๋ถ€ํ„ฐ ํ•œ์ค„์”ฉ ์ปดํŒŒ์ผํ•ด์„œ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹

Quiz 1.
์ด ์ฝ”๋“œ๋Š” ์ •์ƒ์ ์ธ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ๊ฐ€?

int main(){
	int* p; โ€ขโ€ขโ€ข 1)
	int a; โ€ขโ€ขโ€ข 2)
	
	p = &a; โ€ขโ€ขโ€ข 3)
	scanf("%d",&a); โ€ขโ€ขโ€ข 4)
}
  • A. ์ถœ๋ ฅ์„ ์–ด๋””์— ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

Quiz 2.
๊ทธ๋Ÿผ ์œ„์— ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์–ด๋””์—์„œ ์ถœ๋ ฅ ํ–ˆ์„ ๋•Œ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์ด์ƒํ•ด์งˆ๊นŒ?

  • A. 3)๊ณผ 4) ์‚ฌ์ด์— ์ถœ๋ ฅํ–ˆ์„ ๋•Œ๊ฐ€ ์œ ์ผํ•˜๊ฒŒ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. *์“ฐ๋ ˆ๊ธฐ ๊ฐ’ : ์›ํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ๋ณ€์ˆ˜์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ์„ ์–ธ๋งŒ ํ–ˆ์„ ๋•Œ ์ด๋Ÿฌํ•œ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

int* p;
int *p;
int * p;

3๊ฐœ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ 3๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋™์ž‘ ๊ตฌ์กฐ

์œ„์—์„œ ๋งํ•˜๊ธธ โ€œํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐœ๋…โ€์ด๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์—๋Š” ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•˜๋Š”๊ฐ€?
๋ฐ”๋กœ & ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ ๋‹นํ•˜๋Š” ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•์ด ๋˜‘๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ ์ด์œ ๋Š”

#include <stdio.h>

int main(){
	int *p;
	int a = 10;//์ฃผ์†Œ : 0x000000000 ~ 0x00000001f
	int p = &a;
	
}

intํ˜•์ด 4๋ฐ”์ดํŠธ ๋ผ์„œ 0x000000000๋ถ€ํ„ฐ 0x00000001f๊นŒ์ง€์˜ 4btye ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.
์ด๋Ÿฐ์‹์œผ๋กœ ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.
์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅด๋ฉด ์ฐธ์กฐ๋˜๋Š” ์ฃผ์†Œ๊ฐ’์ด ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋ฏ€๋กœ ๊ฐ’์ด ์ด์ƒํ•ด ์งˆ ์ˆ˜ ์žˆ๋‹ค.

์œ„์— ๊ทธ๋ฆผ๊ณผ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด

[ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์ด๋™(0x000000000)] โ†’ [์ฃผ์†Œ๊ฐ’์— ์ €์žฅ๋œ ์ž๋ฃŒํ˜•์˜ ํฌ๊ธฐ๋งŒํผ ๊ฐ’์„ ๋ณต์‚ฌ(0x000000000 ~ 0x00000001f์˜ ๊ฐ’)]
์ฆ‰, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š”int *p = 10; ์ด๋Ÿฐ์‹์œผ๋กœ ๋œ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ์ƒ์—๋Š” 0,1๋กœ ๋˜์–ด ์žˆ์ง€๋งŒ ์ถœ๋ ฅํ•  ๋•Œ๋Š” 10์ง„์ˆ˜(์ •์ˆ˜ํ˜•)๋กœ ๋ฐ”๋€๋‹ค.

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์ถœ๋ ฅ ํ˜•์‹

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์€ ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

int a = 10;
int *p = &a;

printf("ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ์ฃผ์†Œ : %p",p); โ€ขโ€ขโ€ข 1)
printf("a์˜ ์ฃผ์†Œ : %p",a); โ€ขโ€ขโ€ข 2)
printf("p๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ’ : %d",*p); โ€ขโ€ขโ€ข 3)

/*
์ถœ๋ ฅ
----------------------------------
ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ์ฃผ์†Œ : 0x16dc97388
a์˜ ์ฃผ์†Œ : 0x16dc97388
p๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ’ : 10
----------------------------------
*/

*%p : ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ 16์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•œ๋‹ค.

์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ

๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ์ฃผ์†Œ๊ฐ’์ด ๋ฐ”๋€๋‹ˆ๋‹ค.

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 3์›” 9์ผ

C์–ธ์–ด๋ฅผ ํ•˜๋ฉด์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํฌ๊ธฐํ•˜๋Š” ๋ถ€๋ถ„ ํฌ์ธํ„ฐ
์ด๋ฅผ ๊ทน๋ณตํ•ด๋‚˜๊ฐ€๋Š” ๋ชจ์Šต์ด ๋ฉ‹์žˆ์Šต๋‹ˆ๋‹ค

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ