C์–ธ์–ด ๐Ÿ”ฅ์˜ค๋‹ต๋…ธํŠธ๐Ÿ”ฅ

์œค์ง€์˜ยท2024๋…„ 4์›” 21์ผ
  • sizeof() ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ๊ณ„์‚ฐํ•˜๊ธฐ

    • ๐Ÿ”ฅ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์—” null๊ฐ’ ๋“ค์–ด๊ฐ„๋‹ค!!์‚ฌ์ด์ฆˆ ๊ณ„์‚ฐ ์‹œ null๊ฐ’ ํฌํ•จํ•ด์ฃผ์ž!
      • ๐Ÿ”ฅ int : 4byte !!!!
      • ๐Ÿ”ฅ char : 1byte !!!!
    // ํฅ๋‹ฌ์Œค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน๊ฐ• c์–ธ์–ด 46๋ฒˆ
    #include <stdio.h>
    
    int main() {
      char ch[5];
      char str[] = "abcde";
      int num[] = {1, 2, 3, 4, 5};
      printf("%d, ", sizeof(ch));
      printf("%d, ', sizeof(str));
      printf("%d\n", sizeof(num)/sizeof(int));
      return 0;
      }
    ํ•ด์„ค
    - sizeof(ch): 5 char ch[5] : 5๊ฐœ์˜ ๊ณต๊ฐ„ ๊ฐ€์ง„ ๋ฐฐ์—ด
    - sizeof(str) : 6
    char str[]: "abcde"; 
    | a | b | c | d | e | \0 |
    โœจ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์—๋Š” _**๋งˆ์ง€๋ง‰์— `null๋ฌธ์ž`๊ฐ€ ํฌํ•จ๋˜์–ด**_ length๊ฐ€ 6 
    
     - sizeof(num)/sizeof(int) : 5
     int num[] = | 1 | 2 | 3 | 4 | 5 | 
     sizeof(num) = 4byte*5 = 20byte
     sizeof(int) = 4byte
    
    ์ •๋‹ต : 5, 6, 5
    </div>
  • ๋ฌธ์ž์—ด ํฌ์ธํ„ฐ

    • printf ํ•จ์ˆ˜๊ฐ€ %s๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•  ๋•Œ, ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ ์‹œ์ž‘ํ•ด์„œ null ๋ฌธ์ž๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์—ฐ์†๋œ ๋ฌธ์ž๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • printf ํ•จ์ˆ˜๊ฐ€ %c๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž ์ถœ๋ ฅํ•  ๋•Œ, ํ•ด๋‹น ์ฃผ์†Œ์˜ ๋‹จ์ผ ๋ฌธ์ž๋งŒ์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์ด ์ˆซ์ž์ผ ๊ฒฝ์šฐ์—๋„ printf ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ ํƒ€์ž…์„ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜์ž!!! %c์ผ ๊ฒฝ์šฐ ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ธฐ!!
    // ํฅ๋‹ฌ์Œค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน๊ฐ• c์–ธ์–ด 54๋ฒˆ
    #include <stdio.h>
    int main(void){
        int code = 65;
        int *p = &code;
        printf("%c", (*p)++);
        return 0   
    }
      ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ (*p) : 65
      %c : ๋‹จ์ผ ๋ฌธ์ž ์ถœ๋ ฅ. 65 โžก A

    ๐Ÿ”ฅ๐Ÿ”ฅ ์•„๋ž˜ ๋‘๊ฐœ ์ฐจ์ด ํ™•์ธํ•˜๊ธฐ!!!!!!! ๐Ÿ”ฅ๐Ÿ”ฅ

    • printf("%c\n", *(p + 3));
      โžก ํฌ์ธํ„ฐ p์—์„œ 3์นธ ์ด๋™ํ•œ ์œ„์น˜์˜ ๋ฌธ์ž ์ถœ๋ ฅ
    • printf("%c\n", *p + 2);
      โžก ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์˜ ์•„์Šคํ‚ค ๊ฐ’์— 2๋ฅผ ๋”ํ•œ ๊ฐ’ ์ถœ๋ ฅ
    // ํฅ๋‹ฌ์Œค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน๊ฐ• c์–ธ์–ด 56๋ฒˆ
    #include <stdio.h>
    int main(void) {
        char *p = "KOREA";
        printf("%s\n", p); // "KOREA" ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ์ถœ๋ ฅ
        printf("%s\n", p + 3); // ํฌ์ธํ„ฐ p์—์„œ 3์นธ ์ด๋™ํ•œ "EA" ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ
        printf("%c\n", *p); // ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž 'K'๋ฅผ ์ถœ๋ ฅ
        printf("%c\n", *(p + 3)); // ํฌ์ธํ„ฐ p์—์„œ 3์นธ ์ด๋™ํ•œ ์œ„์น˜์˜ ๋ฌธ์ž 'E'๋ฅผ ์ถœ๋ ฅ
        printf("%c\n", *p + 2); // ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž 'K'์˜ ์•„์Šคํ‚ค ๊ฐ’์— 2๋ฅผ ๋”ํ•œ ๊ฐ’ 'M'์„ ์ถœ๋ ฅ
        return 0;
    }
    

    *p + 2๋Š” ํฌ์ธํ„ฐ p์˜ ๊ฐ’(*P=K) 'K'์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ์— 2๋ฅผ ๋”ํ•œ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 'K'์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ๋Š” 75์ด๋ฏ€๋กœ, ์—ฌ๊ธฐ์— 2๋ฅผ ๋”ํ•˜๋ฉด 77์ด๊ณ , ์ด๋Š” 'M'์— ํ•ด๋‹นํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 'M'์ด ์ถœ๋ ฅ๋จ!
    K+2 = M
    K (75) L (76) M (77)

  • ํฌ์ธํ„ฐ + ์ „์น˜/ํ›„์น˜ ์—ฐ์‚ฐ์ž

    ์ฐธ๊ณ ) https://cafe.naver.com/sosozl/5281

    • a = *p++ : a = p์˜ ๊ฐ’ ๊ฐ€์ ธ์˜ด. ์ดํ›„ p= p+1(์ฃผ์†Œ+1)
    • b = (*p)++ : b = p์˜ ๊ฐ’ ๊ฐ€์ ธ์˜ด. ์ดํ›„ *p = *p+1(p์˜ ๊ฐ’+1)
    • *p++ = 10 : p์˜ ๊ฐ’์— 10 ๋„ฃ๊ณ , ์ดํ›„ p=p+1(์ฃผ์†Œ+1)
    • *p+=10 : *p=*p+10
    • *p++ += 10 : *p=*p+10(p์˜ ๊ฐ’+10) ์ดํ›„ p= p+1(์ฃผ์†Œ+1)
  • gets()

    ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด ์ž…๋ ฅ๋ฐ›์•„ ์ €์žฅํ•  ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋ฅผ ์ธ์ž๊ฐ’์œผ๋กœ ๋ฐ›๋Š”๋‹ค.
    // ํ™๊ธธ๋™, ๊น€์ฒ ์ˆ˜, ๋ฐ•์˜ํฌ ์ˆœ์œผ๋กœ ์ž…๋ ฅ๋ฐ›์•˜๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์•„๋ž˜ ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ:

    #include <stdio.h>
    char n[30]; // ์ „์—ญ ๋ฐฐ์—ด n ์„ ์–ธ. ์ตœ๋Œ€ 29๊ฐœ์˜ ๋ฌธ์ž์™€ ๋„ ์ข…๋ฃŒ ๋ฌธ์ž('\0')๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ.
    
    // getname(): ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ n ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ , n์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    char* getname(){
      gets(n); // ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ๋ฐ›์•„ n์— ์ €์žฅ
      return n; // n์˜ ์ฃผ์†Œ ๋ฐ˜ํ™˜
    }
    
    int main() {
      char* n1 = getname(); // ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์•„ n1์ด ๊ฐ€๋ฆฌํ‚ด
      char* n2 = getname(); // ๋‘ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์•„ n2๊ฐ€ ๊ฐ€๋ฆฌํ‚ด
      char* n3 = getname(); // ์„ธ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์•„ n3์ด ๊ฐ€๋ฆฌํ‚ด
    
      // n1, n2, n3์ด ๋ชจ๋‘ ๊ฐ™์€ n ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฏ€๋กœ, ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•จ
      printf("%s\n", n1);
      printf("%s\n", n2);
      printf("%s\n", n3);
    
      return 0; // ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
    }
    • n1, n2, n3 ๋ชจ๋‘ ๊ฐ™์€ ๋ฐฐ์—ด n์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

    • getname ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ n ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ’์€ ์ƒˆ๋กœ์šด ์ž…๋ ฅ์œผ๋กœ ๋ฎ์–ด์“ฐ์—ฌ์ง„๋‹ค.

    • "ํ™๊ธธ๋™"์„ ์ž…๋ ฅํ•œ ํ›„ n1์ด ์ด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๊ณ , ๋‹ค์Œ "๊น€์ฒ ์ˆ˜" ์ž…๋ ฅ ์‹œ n ๋ฐฐ์—ด์— "ํ™๊ธธ๋™" ๋Œ€์‹  "๊น€์ฒ ์ˆ˜"๊ฐ€ ์ €์žฅ๋˜๋ฉฐ n2๋„ ์ด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ "๋ฐ•์˜ํฌ"๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด, "๊น€์ฒ ์ˆ˜"๋Š” "๋ฐ•์˜ํฌ"๋กœ ๋ฎ์–ด์“ฐ์—ฌ์ง€๊ณ , n3 ์—ญ์‹œ "๋ฐ•์˜ํฌ"๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

    • ์ตœ์ข…์ ์œผ๋กœ printf๋กœ n1, n2, n3์„ ์ถœ๋ ฅํ•  ๋•Œ ๋ชจ๋‘ ๋™์ผํ•œ n ๋ฐฐ์—ด์˜ ๋‚ด์šฉ์ธ "๋ฐ•์˜ํฌ"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

      ๋‹ต)
      ๋ฐ•์˜ํฌ
      ๋ฐ•์˜ํฌ
      ๋ฐ•์˜ํฌ

  • strstr(), strncpy()

    • strstr(pa, pb); // pa๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์—์„œ pb๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ์Œ
    • strncpy(pd, "77", 3); // pd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜๋ถ€ํ„ฐ 3๊ฐœ ๋ฌธ์ž๋ฅผ "77"๋กœ ๋ณต์‚ฌํ•จ. ์•„๋ž˜ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ "PP1"์ด "77"๋กœ ๋ฐ”๋€œ

// ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋Š” 100์ด๋ผ ๊ฐ€์ •

#include <stdio.h>
#include <string.h> 

int main() {
    char list[] = "22QPP1"; // ๋ฌธ์ž์—ด์„ ์ดˆ๊ธฐํ™”
    const char *pa, *pb; // ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
    char *pc, *pd; // ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
    
    pa = &list[1]; // 101๋ฒˆ์ง€ ๊ฐ€๋ฆฌํ‚ด
    list[2] = 'K'; // 102๋ฒˆ์ง€ ๊ฐ€๋ฆฌํ‚ด
    pb = &list[3]; // 103๋ฒˆ์ง€ ๊ฐ€๋ฆฌํ‚ด
    pc = list; // //100๋ฒˆ์ง€ ๊ฐ€๋ฆฌํ‚ด
    pd = strstr(pa, pb); 
    // pa(์ฃผ์†Œ 101์—์„œ ์‹œ์ž‘ํ•˜๋Š” "2KPP1")๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์—์„œ 
    // pb(์ฃผ์†Œ 103์—์„œ ์‹œ์ž‘ํ•˜๋Š” "PP1")๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ฅผ ์ฐพ์Œ
    
    printf("pd: %s\n", pd); 
    // pd(์ฃผ์†Œ 103์—์„œ ์‹œ์ž‘ํ•˜๋Š” "PP1")๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ
    
    if (pd != 0) { // pd๊ฐ€ NULL์ด ์•„๋‹ˆ๋ผ๋ฉด (์ฆ‰, ๋ฌธ์ž์—ด์ด ์ฐพ์•„์กŒ๋‹ค๋ฉด)
        strncpy(pd, "77", 3); // pd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜(์ฃผ์†Œ 103)๋ถ€ํ„ฐ "77"์ด๋ผ๋Š” ๋ฌธ์ž์—ด์„ 3๊ฐœ์˜ ๋ฌธ์ž๋กœ ๋ณต์‚ฌ. ์ด ๊ฒฝ์šฐ "PP1"์ด "77"๋กœ ๋ณ€๊ฒฝ๋จ
        printf("pc: %s\n", pc); // pc(์ฃผ์†Œ 100์—์„œ ์‹œ์ž‘ํ•˜๋Š” "22K77")๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ
    }
    
    printf("pb: %s\n", pb); // pb(์ฃผ์†Œ 103์—์„œ ์‹œ์ž‘ํ•˜๋Š” "77")๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ
    
    return 0; // ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ
}
  • 2์ฐจ์› ๋ฐฐ์—ด

    ๐Ÿ”ฅ %p : ํฌ์ธํ„ฐ์˜ ๊ฐ’์„ ์ถœ๋ ฅ

    #include <stdio.h>
    
    int main() {
        int a[2][3] = { {1,2,3}, {4,5,6} }; // 2์ฐจ์› ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
      printf("%p\n", a); // โ‘  ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ์ฃผ์†Œ ์ถœ๋ ฅ, 100 
      printf("%p\n", &a); // โ‘ก ๋ฐฐ์—ด ์ „์ฒด์˜ ์ฃผ์†Œ ์ถœ๋ ฅ, 100 
      printf("%p\n", a[0]); // โ‘ข ์ฒซ ๋ฒˆ์งธ ํ–‰์˜ ์ฃผ์†Œ ์ถœ๋ ฅ, 100 
      printf("%p\n", *a); // โ‘ฃ ์ฒซ ๋ฒˆ์งธ ํ–‰์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์˜ ์ฃผ์†Œ ์ถœ๋ ฅ, 100 
      printf("%p\n", &a[0][0]); // โ‘ค ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ์ฃผ์†Œ ์ถœ๋ ฅ, 100
      printf("%p\n", a[0]+1); // โ‘ฅ a[0][1] ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด.  ์ฃผ์†Œ 104   
      printf("%p\n", *a+1); // โ‘ฆ  a[0][1]์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด. ์ฃผ์†Œ 104
      printf("%p\n", &a[0][0]+1); //โ‘ง  a[0][1] ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด.  104
      printf("%p\n", a+1); // โ‘จ ์ฒซ ๋ฒˆ์งธ ํ–‰ ๋‹ค์Œ์˜ ํ–‰ a[2], ์ฆ‰ ๋‘ ๋ฒˆ์งธ ํ–‰์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด  112    
      printf("%p\n", *(a+1));  // โ‘ฉ ๋‘ ๋ฒˆ์งธ ํ–‰์˜ ์‹œ์ž‘ ์ฃผ์†Œ 112, 
      printf("%p\n", &a[0]+1); // โ‘ช ๋‘ ๋ฒˆ์งธ ํ–‰์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด a[2] ์ฃผ์†Œ 112 
      printf("%d\n", **(a+1)); // โ‘ซ  ๋‘ ๋ฒˆ์งธ ํ–‰์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ ๊ฐ’ ์ถœ๋ ฅ: 4
      printf("%p\n", &a+1); // โ‘ฌ ์ „์ฒด ๋ฐฐ์—ด ๋‹ค์Œ์˜ ์ฃผ์†Œ 124
    
      
        return 0;
    }

๐Ÿ”ฅ
a+1 : a[1]
*(a+1) : a[1][0]
**(a+1) : 4

  • ์™„์ „์ˆ˜ : 2, 28, 496

    • ์™„์ „์ˆ˜๋ž€ ์ž๊ธฐ ์ž์‹ ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์–‘์˜ ์•ฝ์ˆ˜๋ฅผ ๋”ํ•˜๋ฉด ์ž๊ธฐ ์ž์‹ ์ด ๋˜๋Š” ์ˆ˜.
      ์ฝ”๋“œ๋ณด๊ณ  ์™„์ „์ˆ˜ ๋ฌธ์ œ ํŒŒ์•…ํ•˜๊ธฐ! (23๋…„ 3ํšŒ ๊ธฐ์ถœ, 22๋…„ 3ํšŒ ๊ธฐ์ถœ)
profile
์‘ฅ์‘ฅ์‘ฅ์‘ฅ ๋ ˆ๋ฒจ์—…๐ŸŒฑ๐ŸŒผ๐ŸŒณ

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