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

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

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

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

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

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

 

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

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

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

 

 

๋ฐ˜์‘ํ˜•

| ๊ตฌ์กฐ์ฒด ์•ˆ์˜ ๊ตฌ์กฐ์ฒด |

 

| ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜ |

 

| ๊ตฌ์กฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• |

 

| ๊ณต์šฉ์ฒด (union) |

 

| ๋น… ์—”๋””์•ˆ (Big Endian), ๋ฆฌํ‹€ ์—”๋””์•ˆ (Little Endian) |

 

| ์—ด๊ฑฐํ˜• (Enum) |

- ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์— ๋Œ€์ž…ํ•ด์„œ ์ฒ˜๋ฆฌ ํ•  ๋•Œ, ์ƒ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด ๊ทธ์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„ ๋จ

enum { RED, BLUE, WHITE, BLACK };

๊ฐ™์€ ํ˜•ํƒœ๋กœ mainํ•จ์ˆ˜ ์ด์ „์— ์“ฐ๋ฉด RED, BLUE, WHITE, BLACK์— ์ˆœ์„œ๋Œ€๋กœ 0, 1, 2, 3์ด๋ผ๋Š” ๊ฐ’์ด ๋งค๊ฒจ์ง

(ํ•จ์ˆ˜ ๋‚ด์—์„œ RED, BLUE, WHITE, BLACK๋ฅผ ์“ฐ๋ฉด ๊ฐ๊ฐ์„ 0, 1, 2, 3์œผ๋กœ ๋ณ€ํ™˜์ฒ˜๋ฆฌ ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นจ)

 

 

enum { RED = 3, BLUE, WHITE, BLACK };

์™€ ๊ฐ™์ด ํ•˜๋ฉด RED, BLUE, WHITE, BLACK์— ์ˆœ์„œ๋Œ€๋กœ 3, 4, 5, 6์ด๋ผ๋Š” ๊ฐ’์ด ๋งค๊ฒจ์ง

 

 

- ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ง€์ •ํ•œ ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋‹ค์‹œ ์—ฐ์†๋œ ์ˆ˜๋กœ ์ง€์ •๋จ.

enum { RED = 3, BLUE, WHITE = 3, BLACK }

์˜ ๊ฒฝ์šฐ์—๋Š” RED, BLUE, WHITE, BLACK์— ์ˆœ์„œ๋Œ€๋กœ 3, 4, 3, 4์ด๋ผ๋Š” ๊ฐ’์ด ๋งค๊ฒจ์ง

 

 

โ˜…์—ด๊ฑฐํ˜•์—์„œ๋Š” ์–ธ์ œ๋‚˜ ์ •์ˆ˜๊ฐ’ ์ด์–ด์•ผํ•จ.

๋ฐ˜์‘ํ˜•

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

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

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

 

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

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

๋ฐ˜์‘ํ˜•

| ๋ฆฌํ„ฐ๋Ÿด ( 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;
}

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

 

๋ฐ˜์‘ํ˜•

๋ฌธ์ œ : ๋ฌธ์ž์—ด ๋งˆ์ง€๋ง‰ ์›์†Œ๋กœ NULL์„ ๋„ฃ์–ด ์ฃผ์ง€ ์•Š์•˜์Œ

๋ฐ˜์‘ํ˜•

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

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

- 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์™€ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•˜๋ฉด ๋จ

๋ฐ˜์‘ํ˜•

+ Recent posts