C언어에서 선언된 배열 값외의 배열 주소에 접근이 가능할까?

2020. 9. 5. 18:12·개발/C
728x90

군대에서 C언어를 복습하다가 포인터와 배열의 관계에 대해 궁금한점이 생겨서 한 번 알아보았다.

궁금한 점은 사진에 나와있는 코드를 실행해보고 생겼는데, '어째서 존재하지 않을 int arr[2][0]의 주소(메모리)에 접근이 가능한가?' 였다.

그리고 '접근이 가능하더라도 왜 그 값은 쓰레기 값이 아닌, int arr[1][1]의 주소에 4바이트를 더한 정상적인 주소값이 나오는지' 가 궁금했다.

이 결과를 보고 왜 그런지 알아보기 위해,
일단 sizeof 연산자를 이용해보았다.
하지만, 배열의 크기는 16바이트로 정상적인 값이 나왔다.
그리고 int arr[3][0]이나 다른 주소값에도 접근을 해보았지만 에러만 발생했다.

아는대로 왜 그런지 알아보려고 했지만 알 수 없어서 질문을 한 결과.

《 int arr[2][0]의 주소에 접근해도 에러가 없는 이유는, C에서 배열 마지막 원소의 바로 다음 위치는 가리켜도 적법하기 때문이다. 단지 그걸 참조(읽거나 쓰기)해선 안될 뿐이다. 이것은 for문 같은 곳에서 ps++ = last_elem 와 같은 용법을 배려한 것이다. 》

라고 알려주셔서 해결할 수 있었다.

'개발 > C' 카테고리의 다른 글

C를 이용한 K-means Clustering 구현  (0) 2023.08.07
포인터 관련하여 정리  (0) 2021.11.15
'개발/C' 카테고리의 다른 글
  • C를 이용한 K-means Clustering 구현
  • 포인터 관련하여 정리
기짜낭
기짜낭
생각이 많지만, 지금 내가 해야할 것을 하자.
  • 기짜낭
    So tired
    기짜낭
    • 분류 전체보기 (199)
      • 개발 (11)
        • Javascript (19)
        • Typescript (5)
        • Canvas (8)
        • React (13)
        • C (3)
      • 활동 (63)
        • 개인 프로젝트 (33)
        • 나눔 서포터즈 3기 (9)
        • 멋쟁이 사자처럼 (7)
        • 0&1 C++ 자료구조 스터디 (0)
        • 제 9회 창업 아이디어톤 (3)
        • Poom (ZeroWasteShop) (3)
        • 해커톤 (2)
        • 우테코 프리코스 7기 (6)
      • 알고리즘 (27)
        • 알고리즘 정리 (5)
        • 백준 (18)
        • 프로그래머스 (4)
      • 강연 (7)
      • 독서 (18)
      • 회고 & 생각 (16)
        • 연간회고 (4)
      • 기타 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • ※ 예전 블로그
  • 인기 글

  • 태그

    독후감
    타입스크립트
    TypeScript
    한양대학교
    독서
    1주 1권
    백준
    Erica
    3기
    canvas
    에리카
    우테코
    react
    HTML5
    HTML
    프론트엔드
    CSS
    tutorial
    ES6
    개발자
    군대
    알고리즘
    디자인
    개념
    프로젝트
    프로그래밍
    대학
    개발
    1주에 1권씩
    Javascript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
기짜낭
C언어에서 선언된 배열 값외의 배열 주소에 접근이 가능할까?
상단으로

티스토리툴바