|  ๋ฉ”๋ชจ๋ฆฌ ๋™์ ํ• ๋‹น |

#include <stdlib.h>
malloc(ํ• ๋‹น์„ ์›ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ);
free(ํ•ด์ œํ•  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ง€์นญ);

- ๋ฉ”๋ชจ๋ฆฌ ๋™์ ํ• ๋‹น์„ ์œ„ํ•ด์„œ๋Š” ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ํ—ค๋”ํŒŒ์ผ ํ•„์š”(stdlib.h)

- ๋ฉ”๋ชจ๋ฆฌ ๋™์ ํ• ๋‹น์„ ํ•˜๋Š” ํ•จ์ˆ˜ : malloc

- ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ปดํ“จํ„ฐ์— ๋‹ค์‹œ ๋Œ๋ ค์คŒ(ํ•ด์ œ) : free

   โ”• ์ด๋ฅผ ์ œ๋Œ€๋กœ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜memory leak ๋ฐœ์ƒ)

 

|  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ์œ„์น˜ |

- ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ ์ค‘ ํž™(heap)์˜์—ญ์— ํ• ๋‹นํ•จ.

  ํ• ๋‹น๊ณผ ํ•ด์ œ๊ฐ€ ์ž์œ ๋กœ์šด ๋งŒํผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•ด์•ผํ•จ.(์ปดํ“จํ„ฐ๊ฐ€ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ์•Š์Œ)

 

 

๋ฐ˜์‘ํ˜•

| ๊ตฌ์กฐ์ฒด์˜ ๋Œ€์ž… |

- ๊ตฌ์กฐ์ฒด๋„ ๋ณดํ†ต์˜ ๋ณ€์ˆ˜๋“ค๊ณผ ๊ฐ™์ด ๋Œ€์ž…์—ฐ์‚ฐ์ž(=)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

- ๊ตฌ์กฐ์ฒด๋ฅผ ๋Œ€์ž…ํ•˜๋ฉด ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๋Œ€์ผ๋กœ ๋Œ€์‘๋˜์–ด ๊ฐ’์ด ๋ณต์‚ฌ ๋จ

 

| ๊ตฌ์กฐ์ฒด๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๊ธฐ |

- ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜ ๋ฉค๋ฒ„๋“ค์˜ ๊ฐ’์„ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ”๊พธ๋ ค๋ฉด ํฌ์ธํ„ฐ(์ฃผ์†Œ๊ฐ’)์„ ์ด์šฉํ•ดํ•จ.

๋ฐ˜์‘ํ˜•

| ๋ฆฌํ„ฐ๋Ÿด ( literal ) | ์†Œ์Šค ์ฝ”๋“œ ์ƒ์—์„œ ๊ณ ์ •๋œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒƒ

* ํŠนํžˆ C์–ธ์–ด์˜ ๊ฒฝ์šฐ ํฐ๋”ฐ์˜ดํ‘œ(")๋กœ ๋ฌถ์ธ ๊ฒƒ๋“ค์„ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด(string literal)์ด๋ผ ํ•จ.

- ์ปดํ“จํ„ฐ๋Š” ๋ฆฌํ„ฐ๋Ÿด์„ ๋”ฐ๋กœ ๋ณด๊ด€(๋ฆฌํ„ฐ๋Ÿด๋“ค์„ ๋ณด๊ด€ํ•˜๋Š” ๊ณต๊ฐ„์ด ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๋”ฐ๋กœ ์ƒ๊น€ - ํ…์ŠคํŠธ ์„ธ๊ทธ๋จผํŠธ์— ์žˆ์Œ)

- ๋ฆฌํ„ฐ๋Ÿด์ด ๋ณด๊ด€๋˜๋Š” ๊ณณ์€ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ ๊ณณ์ž„, ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ๋จ.

#include <stdio.h>
int main() {
    char str[] = "hello";		//str[]์€ ์Šคํƒ(์ˆ˜์ •๊ฐ€๋Šฅ ํ•œ) ๊ณณ์— ์Œ“์ž„. ๋ฆฌํ„ฐ๋Ÿด์ด ์•„๋‹˜.
    char *pstr = "goodbye";		// ๋ฆฌํ„ฐ๋Ÿด

    str[1] = 'a';
    pstr[1] = 'a';

    return 0;
}

(โ€ป VS 2017 ์ด์ƒ์—์„œ๋Š” char*๋กœ ๋ฆฌํ„ฐ๋Ÿด์„ ๊ฐ€๋ฆฌํ‚ฌ์ˆ˜ ์—†์Œ. const char*๋กœ๋งŒ ๊ฐ€๋Šฅํ•จ.)

| ๋ฌธ์ž์—ด ๋‹ค์‹œ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ |

- C์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด(๋ฐฐ์—ด)์˜ ์ด๋ฆ„์€ ์ฃผ์†Œ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฃจ๊ธฐ ๋ถˆํŽธํ•œ ํŽธ์ž„

   โ˜ž ๋ฌธ์ž์—ด์„ ์ž์œ ๋กญ๊ฒŒ ๋‹ค๋ฃจ๊ธฐ์œ„ํ•œ ํ•จ์ˆ˜ ๊ตฌํ˜„์ด ํ•„์š”ํ•จ.

 

๋”๋ณด๊ธฐ

โ€ปํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์‚ฌํ•ญ๋“คโ€ป

 

1. ์ด ํ•จ์ˆ˜๋Š” ๋ฌด์Šจ ์ž‘์—…์„ ํ•˜๋Š”๊ฐ€?(์ž์„ธํ•  ์ˆ˜๋ก ์ข‹์Œ)

2. ํ•จ์ˆ˜์˜ ๋ฆฌํ„ดํ˜•์ด ๋ฌด์—‡์ด๋ฉด ์ข‹์„๊นŒ?

3. ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ๋Š” ๋ฌด์—‡์„ ๋ฐ›์•„์•ผ ํ•˜๋Š”๊ฐ€?

 

[ ๋ฌธ์ž์—ด ๋‚ด์˜ ์ด ๋ฌธ์ž์˜ ์ˆ˜๋ฅผ ์„ธ๋Š” ํ•จ์ˆ˜]

 

[ ๋ฌธ์ž์—ด์„ ๋ณต์‚ฌํ•˜๋Š” ํ•จ์ˆ˜]

1. a ๋ฌธ์ž์—ด์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ b ๋ฌธ์ž์—ด๋กœ ๋ณต์‚ฌํ•˜๋Š” ํ•จ์ˆ˜

2. ex) ์„ฑ๊ณตํ•˜๋ฉด 1๋ฆฌํ„ด ๋ฐ›์ž => int

3. ๋‘๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ์ธ์ž๋กœ ๋ฐ›์Œ. ๋ฌธ์ž์—ด์€ char ํ˜• ๋ฐฐ์—ด์ด๋ฏ€๋กœ char* 2๊ฐœ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์Œ

#include <stdio.h>
int copy_str(char *str_a, char *str_b);
int main () {
    char str1[] = "hello";
    char str2[] = "hi";

    printf("๋ณต์‚ฌ ์ด์ „ : %s \n", str1);
    
    copy_str(str1, str2);

    printf("๋ณต์‚ฌ ์ดํ›„ : %s \n", str1);

    return 0;
}
int copy_str(char *str_a, char *str_b) {
    while(*str_b) {     //str_b๊ฐ€ 0(NULL)์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์†
        *str_a = *str_b;    //str_b์˜ ๋‚ด์šฉ์„ str_a์— ๋ณต์‚ฌ
        str_b++;        // ๊ทธ ๋‹ค์Œ ๋ฌธ์ž ๊ฐ€๋ฆฌํ‚ด
        str_a++;
    }
    *str_a = '\0';		//NULL ์‚ฝ์ž…

    return 1;
}

   โ””> ๋‘ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์•„์„œ ํ—ˆ๋ฝ๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์นจ๋ฒ”ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์Œ.

[ ๋ฌธ์ž์—ด์„ ํ•ฉ์น˜๋Š”(๋”ํ•˜๋Š”) ํ•จ์ˆ˜]

#include <stdio.h>
int str_add(char *str1, char *str2);
int main() {
    char str1[100] = "hello my name is ";
    char str2[] = "May";

    str_add(str1, str2);

    printf("%s", str1);

    return 0;
}
/* str1 ์— str2 ๋ฌธ์ž์—ด์„ ๋์— ๋ถ™์ธ๋‹ค.
์ด ๋•Œ str1 ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ str2 ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ํฌ๊ธฐ๊ฐ€
์žˆ์–ด์•ผ ํ•œ๋‹ค.*/

int str_add(char *str1, char *str2) {

//str1์˜ ๋๋ถ€๋ถ„ ์ฐพ๊ธฐ
    while(*str1) {
        str1++;
    }
    while(*str2) {
        *str1 = *str2;
        str1++;
        str2++;
    }
   //๋งˆ์ง€๋ง‰์œผ๋กœ str1์— NULL ์ถ”๊ฐ€(str1 ์—์„œ NULL ์ด ์ถ”๊ฐ€ ๋˜์ง€ ์•Š์•˜๊ธฐ ๋–„๋ฌธ) */
    *str1 = '\0';

    return 1;
}

[ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋Š” ํ•จ์ˆ˜]

 

๋ฐ˜์‘ํ˜•

๊ตฌ์กฐ์ฒด : ๊ฐ ์›์†Œ์˜ ํƒ€์ž…์ด ์ œ๊ฐ๊ฐ์ธ ๋ฐฐ์—ด

|๊ตฌ์กฐ์ฒด์˜ ๋„์ž…|

- C์–ธ์–ด์—์„œ ๋ฐฐ์—ด์˜ ์›์†Œ๋Š” ๋ชจ๋‘ ๊ฐ™์€ ํ˜•์‹์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ/๋ถˆํŽธํ•จ์ด ์žˆ์Œ

 

[๊ตฌ์กฐ์ฒด์˜ ๋„์ž…๊ณผ ์ •์˜]

โ˜…๊ตฌ์กฐ์ฒด์˜ ์ •์˜์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์—†๋‹ค.

(์ฐพ๊ธฐ ์–ด๋ ต๊ณ , ์—‰๋šฑํ•œ ์˜ค๋ฅ˜๋งŒ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ˆ˜ํ•˜์ง€ ์•Š๊ฒŒ์กฐ์‹ฌ!!)โ˜…

- struct OOO ๋„ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ํ•œ๊ฐœ์˜ ํƒ€์ž…์„ ์ฐฝ์กฐํ•˜๋Š”๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€

| ๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ |

- ๊ตฌ์กฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ํƒ€์ž…์„ ์ฐฝ์กฐํ•œ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด struct ๊ตฌ์กฐ์ฒด์ด๋ฆ„ *ํฌ์ธํ„ฐ์ด๋ฆ„์œผ๋กœ ์ •์˜

- ptr๋Š” ํฌ์ธํ„ฐ ์ด์ง€ ๊ตฌ์กฐ์ฒด ๊ฐ€ ์•„๋‹˜.

- ๋ฉค๋ฒ„์— ์ ‘๊ทผ ํ•  ๋•Œ๋„ *ptr = str๋ฅผ ์ƒ๊ฐํ•˜๋ฉด (*ptr).a ์™€ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Œ

 

[๊ตฌ์กฐ์ฒด์˜ ํฌ์ธํ„ฐ์™€ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„]

ํฌ์ธํ„ฐ(*)์˜ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ตฌ์กฐ์ฒด์˜ ์›์†Œ์— ์ ‘๊ทผํ•˜๋Š” . ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์—

*ptr.a๋Š” *(ptr.a)์™€ ๊ฐ™์Œ

                   โ””ptr์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ์ฒด์˜ a๋ฉค๋ฒ„ ์ ‘๊ทผํ•˜๋ผ๋Š” ๋œป

                      (ptr์€ ๊ตฌ์กฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํฌ์ธํ„ฐ ์ด๊ธฐ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ ๋ถˆ๊ฐ€)

 

[ ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์ž -> ]

ํฌ์ธํ„ฐ๋กœ ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆญ์œ„๋กœ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

(*ptr).a == ptr->a

๋ฐ˜์‘ํ˜•

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

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

 

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

 

 

 

๋ฐ˜์‘ํ˜•

๋ฐ˜์‘ํ˜•

+ Recent posts