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

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

| ํ•จ์ˆ˜์˜ ์›ํ˜• (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 ํ˜• ๋ณ€์ˆ˜์— ์ธ์ž(๋งค๊ฐœ๋ณ€์ˆ˜)๋กœ ๋ฐ›๊ฒ ๋‹ค."

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

 

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

 

 

 

๋ฐ˜์‘ํ˜•

์‚ฌ์น™์—ฐ์‚ฐ : the four fundamental arithmetic operations

๋ง์…ˆ : addition

๋บ„์…ˆ : subtraction
๊ณฑ์…ˆ : multplication / multiply / times

๋‚˜๋ˆ—์…ˆ : division

 

๋ฐ˜์‘ํ˜•

๋ฐ˜์‘ํ˜•

| 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

 

๋ฐ˜์‘ํ˜•

1. stack smashing : buffer overflow

๋ฐ˜์‘ํ˜•
#include <stdio.h>
int isdigit(char c);
int main() {
    char input;

    scanf("%c", &input);

    if (isdigit(input)) {
        printf("%c๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค. \n", input);
    }
    else {
        printf("%c๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค \n", input);
    }
    return 0;
}
int isdigit(char c) {
    if (48<= c && c <= 57) {
        return 1;
    } else
    return 0;
}
 
 

root@DESKTOP-RMVJKG9:~/modoocode/13.Function# gcc 13.2_6_Use_function.c
13.2_6_Use_function.c:2:5: warning: conflicting types for built-in function ‘isdigit’; expected ‘int(int)’ [-Wbuiltin-declaration-mismatch]
    2 | int isdigit(char c);
      |     ^~~~~~~
13.2_6_Use_function.c:2:1: note: ‘isdigit’ is declared in header ‘<ctype.h>’
    1 | #include <stdio.h>
  +++ |+#include <ctype.h>
    2 | int isdigit(char c);

 

๊ฐ€๋Šฅ์„ฑ 1. std ํ•จ์ˆ˜์™€ ์ด๋ฆ„์ด ์ค‘๋ณต?

http://egloos.zum.com/rucaus/v/2352477

 

warning : conflicting types for built-in function 'ํ•จ์ˆ˜์ด๋ฆ„'

์ด๋ฏธ ๊ทธ ํ•จ์ˆ˜์ด๋ฆ„์œผ๋กœ standard function์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ๊ณ . stdํ•จ์ˆ˜์™€ ๋‚ด๊ฐ€ ๋งŒ๋“  ํ•จ์ˆ˜์ด๋ฆ„์ด ๊ฒน์น˜๋ฉด ์—ฌ๋Ÿฌ๋ชจ๋กœ ์ข‹์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋‚ด ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋‹ค๋ฅธ๊ฑธ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

egloos.zum.com

 

๊ฐ€๋Šฅ์„ฑ 2. ํ•จ์ˆ˜ ์„ ์–ธ์˜ ๋ฌธ์ œ..(ํ•จ์ˆ˜์˜ ์›ํ˜•์„ ์“ฐ์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์„ ์–ธ์ด ์—ฌ๋Ÿฌ๊ตฐ๋ฐ ์ผ๋•Œ..?)

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=plute&logNo=20193419934 

 

๋ฆฌ๋ˆ…์Šค - gcc error - conflicting types for

conflicting types for ์€ ์ž๋ฃŒํ˜•์„ ์ค‘๋ณต์œผ๋กœ ๋”ด๊ณณ์— ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ์ •์˜ ํ–ˆ์„๋•Œ ์ผ์–ด๋‚ ์ˆ˜๋„ ์žˆ๊ณ , ... ๊ทผ๋ฐ ...

blog.naver.com

์ถ”์ธก.. ํƒ€์ž…์˜ ๋ฌธ์ œ์ธ๊ฒƒ ๊ฐ™์€๋ฐ..

๋ฐ˜์‘ํ˜•
#include <stdio.h>

int magicbox(i) {
    i += 4;
    return i;
}

int main() {
    int i;
    printf("a number to put in : \n");
    scanf("%d", &i);
    magicbox(i);
    return 0;
}

์˜ค๋ฅ˜ ๋ฌธ๊ตฌ type of 'i' defaults to 'int'

๋ฌธ์ œ : ํ•จ์ˆ˜ ์ •์˜ ์‹œ ์ธ์ž์˜ ํ˜•ํƒœ๋ฅผ ์„ ์–ธํ•ด ์ฃผ์ง€ ์•Š์Œ.

ํ•ด๊ฒฐ : ํ•จ์ˆ˜ ์„ ์–ธ ์‹œ ๊ด„ํ˜ธ ์•ˆ์— ์ธ์ž์˜ ํ˜• ์„ ์–ธํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ.

 

magicbox( i ) => magicbox( int i )

๋ฐ˜์‘ํ˜•

+ Recent posts