- ๋ฒ„ํผ (buffer) : ์ปดํ“จํ„ฐ์˜ ์–‘๋™์ด(์—ฐ์‚ฐ ๋“ฑ ์ฒ˜๋ฆฌ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž ์‹œ ๋ณด๊ด€)

- stdin(์ž…๋ ฅ์ŠคํŠธ๋ฆผ) : ํ‚ค๋ณด๋“œ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฒ„ํผ

 

- ๊ฐœํ–‰๋ฌธ์ž(\n, ์—”ํ„ฐ)  : ์ž…๋ ฅ์„ ์ข…๋ฃŒํ•˜์˜€์œผ๋‹ˆ ๋ฒ„ํผ์— ๋“ค์–ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ฐ€์ง€๊ณ  ์ฒ˜๋ฆฌํ•ด๋ผ.

              โ””> ๊ฐœํ–‰๋ฌธ์ž๋„ ๋ฒ„ํผ์— ์ €์žฅ ํ•จ..

 

- scanf ํ•จ์ˆ˜๋Š” 'ใ€€' (์ŠคํŽ˜์ด์Šค), '\n' (์—”ํ„ฐ), '\t' (Tab) ์„ ๋งŒ๋‚˜๊ธฐ ์ „๊นŒ์ง€ stdin์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ„ ํ›„ ๋ฒ„ํผ์—์„œ ์‚ญ์ œ ํ•จ.

  โ€ป ์ž…๋ ฅ์„ ๋ฐ›๋Š” ํ˜•๊ณผ ๊ณ„์—ด์ด ๋‹ค๋ฅธ๊ฒฝ์šฐ์—๋„ ์ข…๋ฃŒ(ex. %d๋กœ ์ž…๋ ฅ ๋ฐ›์„ ๋•Œ a๋ฅผ ์ž…๋ ฅ๋˜์–ด์žˆ์œผ๋ฉด ์ฝ์–ด ์˜ค๋Š” ๊ฒƒ ์ข…๋ฃŒ๋จ)

      ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ณต๋ฐฑ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ํ˜•์ด ๋งž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ๊นŒ์ง€ ์ž…๋ ฅ์„ ๊ณ„์† ๋ฐ›์Œ(์—”ํ„ฐ๋ฅผ ์ณ๋„ ์•ˆ๋„˜์–ด๊ฐ)

 

- %s๋Š” stdin์— \n๊ฐ€ ๋‚จ์•„์žˆ๋”๋ผ๋„ ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ(๊ณต๋ฐฑ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค)์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ์ž…๋ ฅ์„ ๋ฐ›๊ณ ,

  ๊ทธ ํ›„์— ๊ณต๋ฐฑ๋ฌธ์ž์—์„œ๋Š” ์ข…๋ฃŒ.

 

- %c๋Š” ๋”ฑ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— stdin์— \n์ด ๋‚จ์•„์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์ข…๋ฃŒ๋จ.

  ๋‹ค๋ฅธํ˜•์‹์€ ๊ณต๋ฐฑ๋ฌธ์ž์— ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, %c๋Š” ๋ฒ„ํผ์— ๋‚จ์•„์žˆ๋Š” ๊ฒƒ์„ ์ž˜ ๊ณ ๋ คํ•ด์•ผํ•จ.

 

| ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ |

[ ๋ฒ„ํผ ๋น„์šฐ๊ธฐ ] (gcc์—์„œ๋Š” X)

fflush(stdin);

-> ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š” ๊ฒƒ์œผ๋กœ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜,

    ํ‘œ์ค€์œผ๋กœ '๋ฌด์Šจ ์—ญํ• ์„ ํ•œ๋‹ค'๋ผ๊ณ  ์ •ํ•ด์ง„ ๊ฒƒ์ด ์•„๋‹˜

    (Visual Studio 2015 ๋ถ€ํ„ฐ๋Š” ํ‘œ์ค€์„ ๋”ฐ๋ผ์„œ ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š” ์ž‘๋™ ํ•˜์ง€ ์•Š์Œ)

 

[ getchar ํ•จ์ˆ˜ ์ด์šฉ ] : stdin์—์„œ ํ•œ ๋ฌธ์ž๋ฅผ ์ฝ์–ด์™€์„œ ๊ทธ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

getchar();

 stdin์—์„œ ์ฝ์–ด์ง„ ๋ฌธ์ž๋Š” stdin์—์„œ ์‚ญ์ œ๋จ. fflush๋ณด๋‹ค ์ž˜ ์“ฐ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ

์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์–ด %c ์‚ฌ์šฉ์„ ์ž์ œํ•˜๋Š”๊ฒŒ ์ตœ์„ 

*๊ฒฐ๋ก , %c(๋ฌธ์ž) ๋Œ€์‹  %s(๋ฌธ์ž์—ด)์„ ์ž…๋ ฅ๋ฐ›์ž!*

๋ฐ˜์‘ํ˜•

 

์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ ๋‹ค๋ฅธ๊ณณ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์„œ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ.

์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ๋Š” ๋‹ค ์ •์ƒ์ ์œผ๋กœ ๋จ.

๋ฐ˜์‘ํ˜•

https://modoocode.com/29

 

์”น์–ด๋จน๋Š” C ์–ธ์–ด - <15 - 1. ์ผ๋กœ์™€๋ด, ๋ฌธ์ž์—ด(string)>

 

modoocode.com

| ๋„ - ์ข…๋ฃŒ ๋ฌธ์ž์—ด (Null-terminated string) |

- ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋ฌธ์ž์—ด์„ char ํ˜•์˜ ๋ฐฐ์—ด์— ์ €์žฅํ•จ.

- ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฌธ์ œ ๋•Œ๋ฌธ์— null ์‚ฌ์šฉ

  โ€ป ๋ฌธ์ž์—ด์—๋Š” null์ด ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„์ด ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (๊ธ€์ž์ˆ˜ + 1)์นธ์ด ํ•„์š”ํ•จ

- ์‚ฌ์šฉ์ž : "๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•ด"โ–ท์ปดํ“จํ„ฐ '๋„์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์•ผ์ง€.'

 

- ๋„ ํ‘œํ˜„ : 0  : ๋„์˜ ์•„์Šคํ‚ค๊ฐ’

                 '\0'  : ๋ฌธ์ž 0๊ณผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ \ ์”€

                 (char)NULL  : NULL์€ 0์ด๋ผ๊ณ  ์ •์˜ ๋˜์–ด ์žˆ๋Š” ์ƒ์ˆ˜์ž„(๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์จ์•ผํ•จ)

#include <stdio.h>
int main() {
    char sentence_1[4] = {'A', 'b', 'c', '\0'};
    char sentence_2[4] = {'A', 'b', 'c', 0};
    char sentence_3[4] = {'A', 'b', 'c', (char)NULL};
    char sentence_4[4] = {"Abc"};

    printf("char sentence_1 : %s \n", sentence_1);  //%s๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.
    printf("char sentence_2 : %s \n", sentence_2);
    printf("char sentence_3 : %s \n", sentence_3);
    printf("char sentence_4 : %s \n", sentence_4);

    return 0;
}

[๋ฌธ์ž์—ด์˜ ์ •์˜] NULL ๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„ ํ•˜๋‚˜๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋งค์šฐ ์ค‘์š”ํ•จ!!

- ํ•œ๊ธ€์ž์”ฉ ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋กœ ์›์†Œ๋กœ ๋„ฃ๊ณ , NULL์„ ๋งˆ์ง€๋ง‰ ์›์†Œ๋กœ ๋„ฃ๊ฑฐ๋‚˜

    ex) char sentence_1[4] = {'A', 'b', 'c', '\0'};
          char sentence_2[4] = {'A', 'b', 'c', 0};
          char sentence_3[4] = {'A', 'b', 'c', (char)NULL};

 

- ํฐ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌธ์ž ๋‚˜์—ด์„ ๋ฌถ์–ด ์ฃผ๊ธฐ๋กœ ๊ฐ€๋Šฅ(์ด๋•Œ NULL์€ ๋’ค์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ ๋จ)

        ex) char sentence_4[4] = {"Abc"};

 

[๋ฌธ์ž์—ด์˜ ์ถœ๋ ฅ]

%c : ํ•œ๋ฌธ์ž๋งŒ ์ถœ๋ ฅ

%s : ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ(๋„์ด ๋‚˜์˜ฌ๋•Œ ๊นŒ์ง€ ๋ฌธ์ž๋ฅผ ๊ณ„์† ์ถœ๋ ฅ)

 

โ€ป ๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ ๊ตฌ๋ถ„

|๋ฌธ์ž ๊ฐœ์ˆ˜ ์„ธ๊ธฐ|

โ€ป C์—์„œ 0์€ ๊ฑฐ์ง“, 0์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฐ’์€ ์ฐธ

    ex. while(str[i]) => str[i]์˜ ๊ฐ’์ด 0์ด ๋ ๋•Œ ๊นŒ์ง€, null์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ๊นŒ์ง€

 

๋ฐ˜์‘ํ˜•

| ํ•จ์ˆ˜ ํฌ์ธํ„ฐ |

 

- ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์˜ ์ •์˜

ํ•จ์ˆ˜์˜๋ฆฌํ„ดํ˜• (*ํฌ์ธํ„ฐ์˜ ์ด๋ฆ„) (์ฒซ๋ฒˆ์งธ ์ธ์ž์˜ ํ˜•, ๋‘๋ฒˆ์งธ ์ธ์ž์˜ ํ˜•...)

   โ””>์ฃผ์†Œ๊ฐ’์„ ๋„ฃ์„ ํ•จ์ˆ˜๊ฐ€ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์˜ ์ •์˜์™€ ์ผ์น˜ ํ•˜๋ฉด ํ•จ์ˆ˜์˜ ์‹œ์ž‘ ์ฃผ์†Œ๊ฐ’์„ ํ•จ์ˆ˜ํฌ์ธํ„ฐ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ.

 

- ํ•จ์ˆ˜์˜ ์ด๋ฆ„์ด ํ•จ์ˆ˜์˜ ์‹œ์ž‘ ์ฃผ์†Œ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ„

ex) 
	int (*pmax)(int, int);
	int max(int a, int b);

	pmax = max      // O ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ
	pmax = &max     // X ํ‹€๋ฆผ

  โ””> pmax๋Š” max์™€ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•˜๋ฉด ๋จ

๋ฐ˜์‘ํ˜•

๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜/๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๊ทธ (๋ณ€์ˆ˜/๋ฐฐ์—ด)ํƒ€์ž…์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ธ์ž๋กœ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

        โ€ป ํฌ์ธํ„ฐ๊ฐ€ ์•„๋‹Œ ์ธ์ž๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋กœ ๋ถ€ํ„ฐ ๊ฐ’์„ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜๋งŒ ์žˆ๋‹ค.

| ํ•จ์ˆ˜์˜ ์›ํ˜• (prototype) |

- ์‚ฌ์šฉ ์ด์œ  : ๋ณดํ†ต ํ•จ์ˆ˜ ์ •์˜๋Š” main ํ•จ์ˆ˜ ๋’ค์— ๋„ฃ๋Š”๋ฐ,

  ํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ ์ธ์ž์— ๋ถ€์ ์ ˆํ•œ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ธ์ž ๋ˆ„๋ฝ ๋“ฑ์ด ๋ฐœ์ƒ ์‹œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„๋‚ด๊ธฐ ์–ด๋ ต๋‹ค.

/* ํ•จ์ˆ˜์˜ ์›ํ˜• */
#include <stdio.h>

int swap(int *a, int *b);	// ์ด ๊ฒƒ์ด ๋ฐ”๋กœ ํ•จ์ˆ˜์˜ ์›ํ˜•

int main() {
  int i, j;
  i = 3;
  j = 5;
  printf("SWAP ์ด์ „ : i : %d, j : %d \n", i, j);
  swap(&i, &j);
  printf("SWAP ์ดํ›„ : i : %d, j : %d \n", i, j);
  return 0;
}

int swap(int *a, int *b) {
  int temp = *a;
  *a = *b;
  *b = temp;
  return 0;
}

int swap(int *a, int *b);  ←ํ•จ์ˆ˜์˜ ์›ํ˜•

              โ””> ํ•จ์ˆ˜ ์›ํ˜•์˜ ์˜๋ฏธ : ์†Œ์Šค์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด ํ•จ์ˆ˜์˜ ์ธ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณต ํ•จ

ใ€€ใ€€ใ€€ใ€€โ˜ž ํ•จ์ˆ˜์˜ ์›ํ˜•์„ ๋„ฃ์œผ๋ฉด ํ•จ์ˆ˜ ์ธ์ž ์‚ฌ์šฉ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์‹œ, ์ •ํ™•ํžˆ ์•Œ๋ ค์คŒ

      ใ€€ใ€€ใ€€ex)

      ใ€€ใ€€ใ€€      error C2198: 'swap' : ํ˜ธ์ถœ์— ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ์ ์Šต๋‹ˆ๋‹ค.
      ใ€€ใ€€ใ€€      warning C4047: 'ํ•จ์ˆ˜' : 'int *'์˜ ๊ฐ„์ ‘ ์ฐธ์กฐ ์ˆ˜์ค€์ด 'int'๊ณผ(์™€) ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
      ใ€€ใ€€ใ€€      warning C4024: 'swap' : ํ˜•์‹ ๋ฐ ์‹ค์ œ ๋งค๊ฐœ ๋ณ€์ˆ˜ 2์˜ ํ˜•์‹์ด ์„œ๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, โ˜…ํ•จ์ˆ˜์˜ ์›ํ˜•โ˜…์„ ๋ฐ˜๋“œ์‹œ ์ง‘์–ด ๋„ฃ์ž.

๋ฐ˜์‘ํ˜•

| ํ•จ์ˆ˜์˜ ์‹œ์ž‘ |

- ๊ฐ™์€ ์ž‘์—…์„ ํ•˜๋Š” ์ฝ”๋“œ์˜ ๋ฐ˜๋ณต์œผ๋กœ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ

 

[ ํ•จ์ˆ˜์˜ ์ •์˜ ]

#include <stdio.h>

int print_hello() {
  printf("Hello!! \n");
  return 0;
}
int main() {
  printf("ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ๋ณด์ž : ");
  print_hello();

  printf("๋˜ ๋ถ€๋ฅผ๊นŒ? ");
  print_hello();
  return 0;
}

- ํ•จ์ˆ˜ ์„ ์–ธ์—์„œ int => ์ด ํ•จ์ˆ˜๋Š” int ํ˜•์˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋Š” ๋œป

   ๋ฐ˜ํ™˜ : return => ์—ฌ๊ธฐ์„œ๋Š” 0(๋ฉ”๋ชจ๋ฆฌ์˜ 4๋ฐ”์ดํŠธ ์ฐจ์ง€ํ•˜๋Š” int ํ˜•)

 

- ํ•จ์ˆ˜ ์ด๋ฆ„์˜ ์กฐ๊ฑด == ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ์กฐ๊ฑด

  ์ข‹์€ ํ•จ์ˆ˜์˜ ์ด๋ฆ„ : ํ•จ์ˆ˜๊ฐ€ ๋ฌด์Šจ ์ž‘์—…์„ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๊ฒƒ, ๊ทธ ํ•จ์ˆ˜๊ฐ€ ํ•˜๋Š” ์ž‘์—…์„ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์ด๋ฆ„์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

 

[ ํ•จ์ˆ˜์˜ ๋ชธ์ฒด(body) ]

 : {} ์•ˆ์˜ ์ฝ”๋“œ

[ ํ•จ์ˆ˜ ํ˜ธ์ถœ(call) ]

 ํ•จ์ˆ˜์ด๋ฆ„();

                  โ””>๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋ผ๋Š” ๋œป

 

[ ํ•จ์ˆ˜์˜ ์ข…๋ฃŒ ]

  . ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ํ•จ์ˆ˜์˜ ๋‚ด์šฉ์„ ์‹คํ–‰ํ•˜๊ณ  ์›๋ž˜ ์‹คํ–‰๋˜๋ ค๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋Œ์•„์™€ ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ๋„˜์–ด๊ฐ.
  . ํ•จ์ˆ˜ ์ข…๋ฃŒ์˜ ๋‘ ๊ฐ€์ง€ ํ˜•ํƒœ :  ๋ฐ˜ํ™˜์ด ๋˜์–ด ์ข…๋ฃŒ, ํ•จ์ˆ˜์˜ ๋ ๋ถ€๋ถ„ ๊นŒ์ง€ ์‹คํ–‰ํ•˜์—ฌ ์ข…๋ฃŒ

     (๋ฐ˜ํ™˜์„ ํ•˜์—ฌ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•จ.)

โ˜… return ์„ ์‹คํ–‰ํ•˜๋ฉด ํ•จ์ˆ˜๋Š” ๋ฌด์กฐ๊ฑด ์ข…๋ฃŒ๋˜์–ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์˜€๋˜ ๋ถ€๋ถ„์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค. โ˜…

 

[ ๋ฐ˜ํ™˜๊ฐ’ ]

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด return๊ฐ’์„ ๋ฐ˜ํ™˜(์ถœ๋ ฅ) ํ•จ.

ex) ์•„๋ž˜์˜ ret()ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’ : 1000

/* ๋ฐ˜ํ™˜๊ฐ’ */
#include <stdio.h>
int ret() { return 1000; }
int main() {
  int a = ret();
  printf("ret() ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’ : %d \n", a);

  return 0;
}

โ€ป function()์„ ์ฝ”๋“œ ์ค‘๊ฐ„์— ์“ฐ๋Š” ๊ฒƒ์€ "ํ•จ์ˆ˜ function์˜ ๋ฐ˜ํ™˜๊ฐ’"์„ ๋œปํ•จ.

 

| main ํ•จ์ˆ˜ |

- ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ์ปดํ“จํ„ฐ๊ฐ€ main ํ•จ์ˆ˜ ๋ถ€ํ„ฐ ์ฐพ์Œ(๋ชจ๋“  ๊ฒฝ์šฐ๋Š” ์•„๋‹˜, ์ ์–ด๋„ ์•ž์œผ๋กœ ๋งŒ๋“ค๊ฒŒ ๋  C ํ”„๋กœ๊ทธ๋žจ๋“ค์˜ ๊ฒฝ์šฐ)

- ์ปดํ“จํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ํ”„๋กœ๊ทธ๋žจ์˜ main ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ ์‹œ์ž‘ํ•จ. 

- ๋งŒ์ผ main ํ•จ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ์ปดํ“จํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์–ด๋””์„œ ๋ถ€ํ„ฐ ์‹คํ–‰ํ•  ์ง€ ๋ชจ๋ฅด๊ฒŒ ๋˜์–ด ์˜ค๋ฅ˜ ์ƒ๊น€

- mainํ•จ์ˆ˜์˜ return์€ OS๊ฐ€ ๋ฐ›๋Š”๋‹ค.

   โ€ป ๋ณดํ†ต mainํ•จ์ˆ˜๋Š” 0์„ ๋ฆฌํ„ดํ•˜์ง€๋งŒ ๋‹ค๋ฅธ๊ฐ’์„ ๋ฆฌํ„ดํ•ด๋„ ์ƒ๊ด€ ์—†์Œ. but ๊ทธ ๋ฆฌํ„ด๊ฐ’์˜ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ผ์ด ๋“œ๋ฌพ.

| ํ•จ์ˆ˜์˜ ์ธ์ž |

* ๋ณ„๊ฐœ์˜ ํ•จ์ˆ˜๋ผ๋ฆฌ๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜ ์•ˆ์˜ ๋ณ€์ˆ˜๋ฅผ ์•Œ ์ˆ˜๋„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์—†์Œ.

- ์ธ์ž(argument, ํ˜น์€ ๋งค๊ฐœ๋ณ€์ˆ˜(parameter))๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ€๋Šฅ

- ์ธ์ž ์‚ฌ์šฉ : ํ•จ์ˆ˜ ์ •์˜ ์‹œ, ๊ด„ํ˜ธ์— ์ธ์ž๋ฅผ ์จ๋‘ 

   ๋ฐ˜ํ™˜๊ฐ’์˜ํƒ€์ž… ํ•จ์ˆ˜์ด๋ฆ„ (์ธ์ž1์˜ํƒ€์ž… ์ธ์ž1์˜์ด๋ฆ„, ์ธ์ž2์˜ํƒ€์ž… ์ธ์ž2์˜์ด๋ฆ„...) {}

#include <stdio.h>
int slave(int master_money) {
  master_money += 10000;
  return master_money;
}
int main() {
  int my_money = 100000;
  printf("2009.12.12 ์žฌ์‚ฐ : $%d \n", slave(my_money));

  return 0;
}

ex) ํ•จ์ˆ˜ ์ •์˜ ์‹œ,

int function( int a) {....} => "ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋กœ ๋ถ€ํ„ฐ ์–ด๋–ค ๊ฐ’์„ a๋ผ๋Š” int ํ˜• ๋ณ€์ˆ˜์— ์ธ์ž(๋งค๊ฐœ๋ณ€์ˆ˜)๋กœ ๋ฐ›๊ฒ ๋‹ค."

      โ”” ์ธ์ž๊ฐ€ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ ์ธ์ž์˜ ๊ฐ’์„ ๊ด„ํ˜ธ์•ˆ์— ๋„ฃ์ง€ ์•Š๊ฑฐ๋‚˜ ์ธ์ž๋ฅผ ์ ๊ฒŒ ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜ ๋‚จ. ("ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ์ธ์ž๊ฐ€ ๋„ˆ๋ฌด ์ ์Šต๋‹ˆ๋‹ค.") 

 

*์ƒ๊ฐํ•ด๋ณด๊ธฐ ๋‹ค์‹œ ํ•ด๋ณผ ๊ฒƒ*

 

 

 

๋ฐ˜์‘ํ˜•

๋ฐ˜์‘ํ˜•

| 1์ฐจ์› ๋ฐฐ์—ด ๊ฐ€๋ฆฌํ‚ค๊ธฐ |

- arr++ : ์˜ค๋ฅ˜ ('++'์— l-value๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.)

  โˆต arr์ด ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ๊ฐ’ ์ž์ฒด๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด์ง€ ํฌ์ธํ„ฐ๊ฐ€์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๊ฐ€๋Šฅ

 

| ํฌ์ธํ„ฐ์˜ ํฌ์ธํ„ฐ |

ํฌ์ธํ„ฐ ์ •์˜ int **p; =>intํ˜• ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ

 

*p : p๋ผ๋Š” ํฌ์ธํ„ฐ์— ์žˆ๋Š” ์ฃผ์†Œ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฐ’(๋ฐ์ดํ„ฐ)

 

| ๋ฐฐ์—ด ์ด๋ฆ„์˜ ์ฃผ์†Œ๊ฐ’ |

#include <stdio.h>

int main() {
  int arr[3] = {1, 2, 3};
  int (*parr)[3] = &arr;

  printf("arr[1] : %d \n", arr[1]);
  printf("parr[1] : %d \n", (*parr)[1]);
}

&arr : ํฌ๊ธฐ๊ฐ€ 3์ธ ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ( ex. int (*p)[3];๋กœ ์ •์˜ )์— ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋‹ค.

                                                                              โ””> () ์—†์œผ๋ฉด int *p[3]; :ํฌ๊ธฐ๊ฐ€ int* ์›์†Œ(ํฌ์ธํ„ฐ) 3๊ฐœ์ธ ๋ฐฐ์—ด์„ ์ •์˜ ํ•œ ๊ฒƒ(ํฌ์ธํ„ฐ์˜ ๋ฐฐ์—ด).

 

โ€ป C์–ธ์–ด์—์„œ๋Š” ๋ฐฐ์—ด์˜ ์‹œ์ž‘์ ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ(arr)์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋”ฐ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์Œ-> 'arr'์˜ ์ฃผ์†Œ๊ฐ’์€ ์—†์Œ. 

    (B์–ธ์–ด ์—์„œ๋Š” 'arr'์˜ ์ฃผ์†Œ๊ฐ’์„ ๋”ฐ๋กœ ๊ฐ€์กŒ์Œ. ์ฆ‰, arr๊ณผ &arr์ด ๋‹ค๋ฅธ ๊ฐ’ ์ถœ๋ ฅ๋์Œ)

| 2์ฐจ์› ๋ฐฐ์—ด์˜ [ ] ์—ฐ์‚ฐ์ž |

- arr[ ][ ] (2์ฐจ์› ๋ฐฐ์—ด์—์„œ)

   arr[0] ์˜ ๊ฐ’๊ณผ arr[0][0]์˜ ์ฃผ์†Œ๊ฐ’์ด ๊ฐ™๊ณ , arr[1] ์˜ ๊ฐ’๊ณผ arr[1][0]์˜ ์ฃผ์†Œ๊ฐ’์ด ๊ฐ™์Œ.

   ๊ฐ’์€ ๊ฐ™์œผ๋‚˜ ์—„์—ฐํžˆ ๋‹ค๋ฅธ ๊ฒƒ. ์•”๋ฌต์ ์œผ๋กœ ํƒ€์ž… ๋ณ€ํ™˜์‹œ์— ๊ฐ™์€ ํฌ์ธํ„ฐ๋กœ ๋ณ€ํ™˜๋  ๋ฟ์ž„

 

- sizeof arr : ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š์Œ

int main() {
  int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
  printf("์ „์ฒด ํฌ๊ธฐ : %d \n", sizeof(arr));
  printf("์ด ์—ด์˜ ๊ฐœ์ˆ˜ : %d \n", sizeof(arr[0]) / sizeof(arr[0][0]));
  printf("์ด ํ–‰์˜ ๊ฐœ์ˆ˜ : %d \n", sizeof(arr) / sizeof(arr[0]));
}

  sizeof(arr) : arr๋ผ๋Š” ๋ฐฐ์—ด์˜ ์ „์ฒด ํฌ๊ธฐ = ์›์†Œ ์ˆ˜ * ํ•œ ์›์†Œ์˜ ํฌ๊ธฐ(32bit์—์„œ๋Š” 4byte)

  sizeof(arr[0]) : arr[0] ๋ฐฐ์—ด์˜ ํฌ๊ธฐ. ๋งˆ์น˜ ์ผ์ฐจ ๋ฐฐ์—ด๊ฐ™์ด..(arr[0][0]~arr[0][3])

  sizeof(arr[0][0]) : ์›์†Œ arr[0][0]  1๊ฐœ์˜ ์˜ ํฌ๊ธฐ 

  => sizeof ์—ฐ์‚ฐ์ž๋กœ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ

* 2์ฐจ์› ๋ฐฐ์—ด์—์„œ arr[ํ–‰์˜ ๊ฐœ์ˆ˜][์—ด์˜ ๊ฐœ์ˆ˜];

 

- arr[0][0]์˜ ํ˜•์ด int์ด๋ฏ€๋กœ ์ด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ ๊ฐ’์ด ๋˜๋Š” arr[0]์€ int*ํ˜•์ด ๋จ

  arr[1][0]์˜ ํ˜•๋„ int์ด๋ฏ€๋กœ ์ด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ ๊ฐ’์ด ๋˜๋Š” arr[1]์—ญ์‹œ int*ํ˜• ์ž„.

- int** ํ˜• ํฌ์ธํ„ฐ๋Š” ๋ฐฐ์—ด์˜ ์ด๋ฆ„์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์—†์Œ,(๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด int** ํ˜• ํฌ์ธํ„ฐ๋กœ ๋ฐฐ์—ด์˜ ์›์†Œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ ํ•˜๊ฒ ์ง€...)

 

| ํฌ์ธํ„ฐ์˜ ํ˜•(type)์„ ๊ฒฐ์ •์ง“๋Š” ๋‘ ๊ฐ€์ง€ ์š”์†Œ |

*ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด 2์ฐจ์› ๋ฐฐ์—ด์˜ ์›์†Œ์— ์ ‘๊ทผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด์˜ '์—ด์˜ ๊ฐฏ์ˆ˜'์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์–ด์•ผํ•จ.

ex) arr[a][b]๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ(parr)๋กœ arr[x][y] ์›์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ 'arr + 4bx + 4y'์™€ ๊ฐ™์Œ.

๋”ฐ๋ผ์„œ, 2์ฐจ์› ๋ฐฐ์—ด์˜ ํฌ์ธํ„ฐ๋Š” ์—ด์˜ ๊ฐฏ์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด

int (*parr)[3]; /* intํ˜• ์ด์ฐจ์› ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š”๋ฐ, ๊ทธ ๋ฐฐ์—ด ํ•œ ํ–‰์˜ ๊ธธ์ด(์—ด์˜ ๊ฐฏ์ˆ˜)๊ฐ€ 3์ž„ */

๋ฐฐ์—ด์˜ํ˜• (*ํฌ์ธํ„ฐ์ด๋ฆ„)[2์ฐจ์›๋ฐฐ์—ด์˜ ์—ด ๊ฐฏ์ˆ˜]; ๋กœ ์ •์˜ํ•œ๋‹ค.

    => ์—ฌ๊ธฐ์„œ parr์€ ์—ด์˜ ๊ฐฏ์ˆ˜๊ฐ€ 3์ธ ๋ฐฐ์—ด๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ex) arr[50][3] ๊ฐ€๋Šฅ, brr[50][2] ๋ถˆ๊ฐ€๋Šฅ

 

 

 

๋ฐ˜์‘ํ˜•

| ์ƒ์ˆ˜ ํฌ์ธํ„ฐ ( int const * pa vs. int *const pa ) |

- ์ƒ์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š” 'const'

โ˜… ์ ˆ๋Œ€๋กœ ๋ฐ”๋€Œ์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์€ ๊ฐ’์—๋Š” ๋ฌด์กฐ๊ฑด const๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ์Šต๊ด€์„ ๊ธฐ๋ฅด์ž.

 

[ const *pa ์™€ *const pa ]

| ํฌ์ธํ„ฐ์˜ ๋ง์…ˆ, ๋บ„์…ˆ |

- ํฌ์ธํ„ฐ์™€ ์ƒ์ˆ˜์˜ ๋ง์…ˆ, ๋บ„์…ˆ ๊ฐ€๋Šฅ=> ์ฃผ์†Œ๊ฐ’(๊ฐ€๋ฅดํ‚ค๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฅธ)์˜ ํฌ๊ธฐ๋งŒํผ ๋”ํ•˜๊ณ  ๋บ„์…ˆ ํ•จ

/* ๊ณผ์—ฐ? */
#include <stdio.h>
int main() {
  int a;
  char b;
  double c;
  int* pa = &a;
  char* pb = &b;
  double* pc = &c;

  printf("pa ์˜ ๊ฐ’ : %p \n", pa);
  printf("(pa + 1) ์˜ ๊ฐ’ : %p \n", pa + 1);
  printf("pb ์˜ ๊ฐ’ : %p \n", pb);
  printf("(pb + 1) ์˜ ๊ฐ’ : %p \n", pb + 1);
  printf("pc ์˜ ๊ฐ’ : %p \n", pc);
  printf("(pc + 1) ์˜ ๊ฐ’ : %p \n", pc + 1);

  return 0;
}

 

ํ˜•์— ๋”ฐ๋ผ +1์ด ๋‹ค๋ฆ„ : (pa(intํ˜•)์€ 4, pb(charํ˜•)์€ 1, pc(double)์€ 8

- ํฌ์ธํ„ฐ ๋ผ๋ฆฌ์˜ ๋ง์…ˆ์€ ํ—ˆ์šฉX  โˆต ์ฃผ์†Œ๊ฐ’ ๋ผ๋ฆฌ์˜ ๋ง์…ˆ์€ ์˜๋ฏธ๊ฐ€ ์—†์Œ

   โ””๊ทผ๋ฐ ํฌ์ธํ„ฐ๋ผ๋ฆฌ์˜ ๋บ„์…ˆ์€ ๊ฐ€๋Šฅ!! (why??)

- ํฌ์ธํ„ฐ ๋Œ€์ž… ex) pb = pa๋Š” ์„ฑ๋ฆฝ ํ•˜๋‚˜, ๋‘ ํฌ์ธํ„ฐ์˜ ํ˜•์ด ๊ฐ™์•„์•ผ ํ•จ.

    โ”” ๋‹ค๋ฅด๋ฉด ํ˜•๋ณ€ํ™˜ ํ•ด์•ผํ•จ ์ด๊ฑด ๋‚˜์ค‘์—..

| ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ์™€์˜ ๊ด€๊ณ„ |

๋ฐฐ์—ด์˜ ์ €์žฅ ํ˜•ํƒœ

๋ฐฐ์—ด์˜ ์‹œ์ž‘๋ถ€๋ถ„์„ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ •ํ•œ ๋’ค์— ํฌ์ธํ„ฐ์— 1์„ ๋”ํ•˜๋ฉด ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

โˆต p + n => p๊ฐ€๋‹ด๊ณ ์žˆ๋Š”์ฃผ์†Œ๊ฐ’ + n*4

=> ํฌ์ธํ„ฐ์— ์ •์ˆ˜๋ฅผ ๋”ํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

     ๋‹จํ•ญ ์—ฐ์‚ฐ์ž *๋ฅผ ์ด์šฉํ•˜์—ฌ ์›์†Œ๋“ค์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ

| ๋ฐฐ์—ด์˜ ์ด๋ฆ„์˜ ๋น„๋ฐ€ |

- ๋ฐฐ์—ด์˜ ์ด๋ฆ„์€ ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ

  ex) int arr[3] = {1, 2, 3};

        printf ("%d", arr);

        printf(%p", &arr[0]);

=> ๊ฐ™์€ ์ฃผ์†Œ๊ฐ’์ด ์ถœ๋ ฅ๋จ. ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์˜ ์ด๋ฆ„์ด ํฌ์ธํ„ฐ๋ผ๋Š” ๊ฒƒ์€ ์•„๋‹˜

ใ€€ใ€€๋ฐฐ์—ด์˜ ์ด๋ฆ„ ์‚ฌ์šฉ์‹œ ์•”๋ฌต์ ์œผ๋กœ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ ํƒ€์ž… ๋ณ€ํ™˜๋  ๋ฟ์ž„.

 

| ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์ด๊ณ  ํฌ์ธํ„ฐ๋Š” ํฌ์ธํ„ฐ๋‹ค |

- sizeof(ํฌ๊ธฐ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ฐ์‚ฐ์ž) ๋˜๋Š” &(์ฃผ์†Œ๊ฐ’ ์—ฐ์‚ฐ์ž)์™€ ์“ฐ์ผ ๋•Œ๋Š” ๋ฐฐ์—ด์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†์Œ

#include <stdio.h>
int main() {
  int arr[6] = {1, 2, 3, 4, 5, 6};
  int* parr = arr;

  printf("Sizeof(arr) : %d \n", sizeof(arr));
  printf("Sizeof(parr) : %d \n", sizeof(parr));
}

์˜ ๊ฒฐ๊ณผ๋Š” 

sizeof ๋ฐฐ์—ด : ๋ฐฐ์—ด์˜ ์‹ค์ œ ํฌ๊ธฐ

sizeof ๋ฐฐ์—ดํฌ์ธํ„ฐ : ํฌ์ธํ„ฐ์˜ ํฌ๊ธฐ (์˜ˆ์‹œ๋Š” 64๋น„ํŠธ ์ปดํ“จํ„ฐ ์ด๋ฏ€๋กœ ํฌ์ธํ„ฐ์˜ ํฌ๊ธฐ๋Š” 8)

=> ์ฆ‰, ๋ฐฐ์—ด์˜ ์ด๋ฆ„๊ณผ ๋ฐฐ์—ด ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ์ฃผ์†Œ๊ฐ’์€ ๋‹ค๋ฅธ ๊ฒƒ.

 

| [ ] ์—ฐ์‚ฐ์ž์˜ ์—ญํ•  |

[ ] ๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

/* [] ์—ฐ์‚ฐ์ž */
#include <stdio.h>
int main() {
  int arr[5] = {1, 2, 3, 4, 5};

  printf("a[3] : %d \n", arr[3]);
  printf("*(a+3) : %d \n", *(arr + 3));
  return 0;
}

์˜ ๊ฒฐ๊ณผ๋Š”

์ฆ‰, arr[i]์€ *(arr + i)์œผ๋กœ ๋ฐ”๋€Œ์–ด์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค. ex) 3[arr] => *(3 + arr)๋„ ๊ฐ€๋Šฅํ•˜๊ธดํ•จ. ํ—ท๊ฐˆ๋ ค์„œ ์ž˜ ์•ˆ์“ฐ๋Š” ํ˜•ํƒœ์ž„.

 

| ํฌ์ธํ„ฐ์˜ ์ •์˜ |

- ํฌ์ธํ„ฐ ์ •์˜๋Š” int* p; ๋˜๋Š” int *p; ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‚˜ ๋‹ค์ˆ˜์˜ ํฌ์ธํ„ฐ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‹ค์ˆ˜์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ๋ณดํ†ต ํ›„์ž์˜ ํ˜•ํƒœ๋กœ ์”€

  ์‹ค์ˆ˜์˜ ์˜ˆ) int* p, q, r;  => ํฌ์ธํ„ฐ p์™€ int ๋ณ€์ˆ˜ q, r๋ฅผ ์„ ์–ธ

        ใ€€ใ€€ใ€€ int *p, *q, *r;  => ํฌ์ธํ„ฐ p, q, r๋ฅผ ์„ ์–ธ

 

https://modoocode.com/24

 

์”น์–ด๋จน๋Š” C ์–ธ์–ด - <12 - 2. ํฌ์ธํ„ฐ๋Š” ์˜ํฌ์ด๋‹ค! (ํฌ์ธํ„ฐ)>

 

modoocode.com

 

๋ฐ˜์‘ํ˜•

| ํฌ์ธํ„ฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์•ž์„œ |

- 32๋น„ํŠธ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ปดํ“จํ„ฐ๋“ค์€ ์ฃผ์†Œ๊ฐ’์˜ ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ 32bit(4byte)์ž„

  (64๋น„ํŠธ ์ปดํ“จํ„ฐ์—์„œ๋Š” 64bit(8byte)

  : 32๋น„ํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ๊ฐ’์˜ ๊ฐ€์ง€์ˆ˜๋Š” 2์˜ 32์Šน byte(=4GB)

   ์ฆ‰, RAM์€ ์ตœ๋Œ€ 4GB๊นŒ์ง€ ๋ฐ–์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

 

| ํฌ์ธํ„ฐ | : ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์œ„์น˜ํ•œ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ์˜ (์‹œ์ž‘)์ฃผ์†Œ๊ฐ’์„ ๋ณด๊ด€ํ•˜๋Š” ๋ณ€์ˆ˜

- ํฌ์ธํ„ฐ๋„ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” '๋ณ€์ˆ˜'

                  โ””> ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๊ฐ’

 

  - ํฌ์ธํ„ฐ๋„ ํ˜•(type)์ด ์žˆ๋‹ค 

    โ˜ž intํ˜• ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํฌ์ธํ„ฐ ≠ charํ˜• ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํฌ์ธํ„ฐ

 

- ํฌ์ธํ„ฐ์˜ ์ •์˜ :

(ํฌ์ธํ„ฐ์— ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•) *(ํฌ์ธํ„ฐ์˜ ์ด๋ฆ„);

๋˜๋Š”

(ํฌ์ธํ„ฐ์— ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•)* (ํฌ์ธํ„ฐ์˜ ์ด๋ฆ„);

ex) int *p;  ๋˜๋Š” int* p;  

    โ˜ž p๋Š” intํ˜• ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜

 

| & ์—ฐ์‚ฐ์ž |

โ€ป ์—ฐ์‚ฐ์ž & (AND)๋Š” ๋‘๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•จ

- ๋‹จํ•ญ(unary) ์—ฐ์‚ฐ์ž : ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 1๊ฐœ์ธ ์—ฐ์‚ฐ์ž, AND์™€ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„๋จ

- ๋‹จํ•ญ & ์—ฐ์‚ฐ์ž : ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ฃผ์†Œ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ด

&/* ์ฃผ์†Œ๊ฐ’์„ ๊ณ„์‚ฐํ•  ๋ฐ์ดํ„ฐ */

   ex) &a  : a์˜ ์ฃผ์†Œ๊ฐ’์ด ๋ถˆ๋ ค์ €์˜ด.

/* & ์—ฐ์‚ฐ์ž */
#include <stdio.h>
int main() {
  int a;
  a = 2;

  printf("%p \n", &a);
  return 0;
}

์˜ ๊ฒฐ๊ณผ

- a์˜ ์ฃผ์†Œ(ํฌ์ธํ„ฐ)๋ฅผ 16์ง„์ˆ˜๋กœ ์ถœ๋ ฅ %p (%d ๋กœ ์ถœ๋ ฅ์‹œ 10์ง„์ˆ˜๋กœ ํ‘œ๊ธฐ)

- 0x7fff80505b64 ๋กœ ์ถœ๋ ฅ ๋˜์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ฃผ์†Œ๊ฐ’์˜ ํฌ๊ธฐ์ธ 8๋ฐ”์ดํŠธ(16์ง„์ˆ˜๋กœ 16์ž๋ฆฌ)์—์„œ 0์ด ์ž˜๋ฆฐ๊ฒƒ

  ์‹ค์ œ ์ฃผ์†Œ๊ฐ’ : 0x00007fff80505b64

 

- ํ•œ๋ฒˆ ์ •์˜ ๋œ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

 

| * ์—ฐ์‚ฐ์ž | : ์ฃผ์†Œ๊ฐ’์— ๋Œ€์‘๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์—ฐ์‚ฐ์ž

โ€ป ๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž * ๋Š” ๋‘๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•จ

- ๋‹จํ•ญ(unary) ์—ฐ์‚ฐ์ž : ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 1๊ฐœ์ธ ์—ฐ์‚ฐ์ž, ๊ณฑ์…ˆ ์—ฐ์‚ฐ๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„๋จ

- ๋‹จํ•ญ * ์—ฐ์‚ฐ์ž : ์ฃผ์†Œ๊ฐ’์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ด

ex)

/* * ์—ฐ์‚ฐ์ž์˜ ์ด์šฉ */
#include <stdio.h>
int main() {
  int *p;
  int a;

  p = &a;
  a = 2;

  printf("a ์˜ ๊ฐ’ : %d \n", a);
  printf("*p ์˜ ๊ฐ’ : %d \n", *p);

  return 0;
}

  *p : ๋‚˜(p)์— ์ €์žฅ๋œ ์ฃผ์†Œ๊ฐ’์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ ์ฆ‰, *p์™€ a๋Š” ๋™์ผํ•จ 

 

- ํฌ์ธํ„ฐ p ์— ์–ด๋–ค ๋ณ€์ˆ˜ a ์˜ ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด 'ํฌ์ธํ„ฐ p ๋Š” ๋ณ€์ˆ˜ a ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค'๋ผ๊ณ  ํ•จ.

 

- ํฌ์ธํ„ฐ๋„ ์ž๊ธฐ ์ž์‹ ๋งŒ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

 

| ํฌ์ธํ„ฐ์—๋Š” ์™œ ํƒ€์ž…์ด ์žˆ์„๊นŒ |

- ํฌ์ธํ„ฐ๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’ ์ „์ฒด์˜ ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ ์ฃผ์†Œ๊ฐ’์˜ ์‹œ์ž‘ ์ •๋ณด๋งŒ ๊ฐ€์ง€๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—,

   ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ณ€์ˆ˜์˜ ํ˜•์„ ์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด *pํ–ˆ์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์–ผ๋งˆ๋งŒํผ ์ฝ์–ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ

  ex)

int a;
int *p;
p = &a;
*p = 4;

 ์ปดํ“จํ„ฐ๋Š” ํฌ์ธํ„ฐ p ๊ฐ€ int * ๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ณด๊ณ  ์ด ํฌ์ธํ„ฐ๋Š” int ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด ์‹œ์ž‘ ์ฃผ์†Œ๋กœ ๋ถ€ํ„ฐ ์ •ํ™•ํžˆ 4 ๋ฐ”์ดํŠธ๋ฅผ ์ฝ์–ด ๋“ค์–ด ๊ฐ’์„ ๋ฐ”๊พธ๊ฒŒ ๋จ

| ํฌ์ธํ„ฐ๋„ ๋ณ€์ˆ˜๋‹ค | : ํฌ์ธํ„ฐ์— ๋“ค์–ด๊ฐ„ ์ฃผ์†Œ๊ฐ’์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

ex) a์˜ ์ฃผ์†Œ๊ฐ’์ด ๋“ค์–ด๊ฐ”๋‹ค๊ฐ€ b์˜ ์ฃผ์†Œ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

https://modoocode.com/23

 

์”น์–ด๋จน๋Š” C ์–ธ์–ด - <12 - 1. ํฌ์ธํ„ฐ๋Š” ์˜ํฌ์ด๋‹ค! (ํฌ์ธํ„ฐ)>

 

modoocode.com

 

๋ฐ˜์‘ํ˜•

+ Recent posts