C Macro NULL - sonkoni/Koni-Wiki GitHub Wiki

stddef.h | string.h | wchar.h | time.h | locale.h | stdio.h | stdlib.h

NULL

제둜(0)λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터

#define NULL   (void*) 0

NULL은 μ—¬λŸ¬ 곳에 μ •μ˜λ˜μ–΄ μžˆλ‹€. μ œλ‘œν¬μΈν„°. objcμ—μ„œ nil(Nil)κ³Ό κ°™λ‹€.

char *ptr = NULL κ³Ό char *ptr = 0 λŠ” 같은 μ˜λ―Έμ΄λ‹€. NULL의 μ˜λ―ΈλŠ” a λ³€μˆ˜μ— μ£Όμ†Œκ°’ 0 을 λ„£λŠ” 것을 μ˜λ―Έν•œλ‹€.

#include <stdio.h>
int main(int argc, char *argv[]) {
    
    // μ•„μŠ€ν‚€ 0번(NUL)을 κ°€λ¦¬ν‚€λŠ” 포인터 μ£Όμ†Œ 0을 λ„£λŠ”λ‹€λŠ” 것을 의미
    char *ptr1 = 0;
    char *ptr2 = NULL;
    printf("-> %p, %s\n", ptr1, ptr1);
    printf("-> %p, %s\n", ptr2, ptr2);
    // -> 0x0, (null)
    // -> 0x0, (null)
    
    
    // μ •μˆ˜ μŠ€ν† λ¦¬μ§€μ— μ•„μŠ€ν‚€ 0번(NUL)을 λ„£λŠ” 것을 의미
    char a = 0;
    char b = '\0';   // ''λŠ” 문자 κ³΅κ°„μ—μ„œ μ°ΎλŠ”λ° \λ₯Ό λ„£μœΌλ©΄ μ•„μŠ€ν‚€ 번호둜 λ“€μ–΄κ°„λ‹€.
    char c[1] = "";  // ""μ—λŠ” 끝에 '\0' 이 ν¬ν•¨λœλ‹€.
    printf("-> %d, %c\n", a, a);
    printf("-> %d, %c\n", b, b);
    printf("-> %d, %s\n", c[0], c);
    // ν•΄λ‹Ή λ¬Έμžκ°€ μ—†κΈ° λ•Œλ¬Έμ— %c 둜 ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€(μ œμ–΄λ¬Έμžμ΄κΈ° λ•Œλ¬Έμ— ν‘œν˜„ν•  수 μ—†λ‹€)
    // -> 0,
    // -> 0,
    // -> 0,
    
    
    // μ •μˆ˜ μŠ€ν† λ¦¬μ§€μ— μ•„μŠ€ν‚€ 48번(숫자 0)을 μ €μž₯ν•œλ‹€λŠ” 의미
    char c = '0';
    printf("-> %d, %c\n", c, c);
    // -> 48, 0
    
    return 0;
}
⚠️ **GitHub.com Fallback** ⚠️