Day 3 - Character Pointer & Array

2025. 2. 26. 10:55·IDEC 교육/Embedded C

C Language의 Character

C언어에서의 Charcater = 즉 char는 하나의 문자를 가르키는 Type

Character Pointer

char *의 Type은 char의 주소를 나타내는 Type

Character Array

char temp[6] = "Hello"에서 temp는 char Type이 6개 (마지막 NULL문자 포함) 있는 배열이고
배열명은 해당 배열의 시작 주소를 가르키는 상수이다.
즉 temp와 &temp[0]는 같은 값을 가르킨다.

Array? Pointer?

우리는 *을 포인터 변수 앞에 붙여서 해당 포인터가 가르키고 있는 값을 "참조" 할 수 있다.
또한 &을 변수 앞에 붙여서 해당 변수의 "주소"를 알 수 있다.
temp는 배열의 주소를 가르키는 "상수"이므로 우리가 임의로 변경 할 수 없다.

차이점

여기서 Array와 Pointer의 차이가 나타나는데,
char arr[] = "Hello"로 정의하는 것(배열로 정의)
char *p = "Hello"을 이용해 정의하는 것(포인터로 정의)은 근본적인 차이가 존재한다.

둘의 공통점은 "Hello"와 같은 문자열은 컴파일시에 문자열 리터럴로 ROM에 저장되게 되는데
그 이후가 다르게 작동한다.

Array로 정의

배열로 정의하게 되면 컴파일 시 ROM에 "Hello"라는 문자열을 저장해둔다음,
"Hello"라는 문자열을 담기 위한 공간을 RAM에 생성하고 거기에 문자열을 ROM에서 "복사"해온다.
즉 사용자가 수정하는 것이 자유로워서 arr[2] = 'a'로 바꿔서 Healo가 될 수 있는 것 이다.

Pointer로 정의

포인터로 정의하게 되면 컴파일 시 ROM에 "Hello"라는 문자열을 저장해두는 것 까지는 같으나,
p는 ROM에 있는 문자열을 가르키는 주소를 담고 있을 뿐이므로, 해당 값을 변경하는 것은 불가능하고,
만약 가능하다면 ROM이 수정되는 것이므로 매우 위험하다.
= 애초에 포인터는 단순 주소이므로 그 앞뒤로 무슨 값이 들어있을지도 모르기 때문에 항상 포인터를 다룰때는 주의 해야한다.

저작자표시 비영리 변경금지 (새창열림)
'IDEC 교육/Embedded C' 카테고리의 다른 글
  • Day 3 - Structure
  • Day 3 - Function Pointer
  • Day 2 - Pointer & Array
  • Day 2 - Preprocessor
Zi_Yoon
Zi_Yoon
머리 속에 정리하는 곳 <전자공학>
  • Zi_Yoon
    ZY_repo
    Zi_Yoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • HDLBits (25)
        • Verilog (19)
        • Circuits (4)
        • Verification (0)
      • IDEC 교육 (1)
        • Embedded C (13)
        • Verilog HDL (8)
      • Hardware (8)
        • RISC-V Project (1)
        • Computer Architecture (0)
        • AMBA (2)
        • FPGA (0)
        • 논문 읽기 (1)
        • ETC. (4)
      • 42서울 (13)
        • 리눅스 (12)
        • 네트워크 (1)
      • 생각 (1)
      • 취업 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pointer
    RISC-V
    Keil
    비대칭 키
    세션 키
    signal trap
    APT
    bit-wise and
    c
    research rabbit
    IDEC
    debian
    verilog
    AMBA
    ARM
    centos
    ssh
    AppArmor
    axi
    hdlbits
    fucntion
    embedded
    보안 쉘
    lsblk
    vm
    verilator
    AXI4
    fpga
    QUARTUS
    charater
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Zi_Yoon
Day 3 - Character Pointer & Array
상단으로

티스토리툴바