게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
댓글쓰다가, 글로... c포인터, printf가 이상해요.를 설명함
게시물ID : programmer_16244짧은주소 복사하기
작성자 : 푸른놀
추천 : 1
조회수 : 435회
댓글수 : 4개
등록시간 : 2016/03/17 10:23:05
pointer.png

그림으로 보자면.. b[2]까지만 써야지 왜 b[3]이 가능하느냐?..

그림 보시면 가능하지 않습니까?

a[2]에 무엇인가 넣으면 b[0]에 들어가 지죠.

그럼 char *a, *b로 선언하면 주소만 만들고 저장공간은 없지 않냐?

10 이하, 즉 char *a처럼 길이를 선언하지 않은 경우에도

os나 컴파일러에 따라서 10개의 공간이 확보 되는 경우가 있다는 겁니다.


다른 분이 질문하고, 제가 댓글달아 테스트 했던 경우엔 12자리 확보된것도 있고요.

그게 왜 10개인지 12개인지는 저도 잘 모릅니다...

하지만 제가 c를 한참 배우던 시절에 포직스에서 그냥 어레이 쓸것같은 놈들은 10칸은 기본으로 주자..

라는 주장이 있었고, 컴파일러에 따라 그 의견을 수용한게 있었습니다.

그리고, 포직스에서 10자리 선언된것을 표준으로 정한다고 했었는데, 강제 사항은 아니고,

10자리를 잡아도 된다란 허가 사항입니다... 컴파일러의 옵션에 따라 저 상황은 바뀌고,

경험에 다르면 옵티마이즈, 스트립등의 영향도 받는것으로 보입니다.

여유 공간이 있으니까 안전해 진것 같긴 하지만, 놔두었다가 나중에 더 큰 뒷통수 맞습니다.

요즘 툴(커피나 디플랫...)은 메모리에 대해서 프로그래머가 고민하지 않고 써도 큰 상관 없게 만든 툴들이 

대부분이라서... 많이 편해진것 같습니다.

알고리즘 최적화등을 해야 하는 수준이면 비트수준 한치의 오차가 없게 빠삭해야 합니다. 일반적으론 필요하지 않습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호