포인터 크기 관련해서 문의드립니다.

조회수 522회

안녕하세요. 궁금한것이 있는데요.

배열로 선언할 경우 크기가 존재하는데요.

예를들어 char b[100] 으로 선언하면 b 배열은 100까지 데이터를 저장할 수 있는걸로 알고있는데요.

아래처럼 되어있는 경우 s1 포인터는 크기가 어떻게 되는건가요?

무한하게 저장할 수 있는건지, 아니면 최대 크기가 있는건지 궁금합니다.

include

int main() { char *s1; s1 = "Hello" printf("%s\n", s1); printf("%ld\n", sizeof(*s1));
return 0; }

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • C는 잘 모르지만 댓글 남깁니다. 잠깐 해봤는데 포인터는 8바이트 크기를 가집니다(64bit기준). 질문이 s1 포인터 크기를 물어보셨는데, 일단 char s1을 -> char* s1으로 고치셔야 할 것 같습니다. 포인터형 변수는 맨앞 주소값만 가지고 있기때문에 접근 할때도 *(S+i)로 접근해야 순차적으로 접근이 가능하구요. 즉, s1포인터 크기는 8입니다. 하지만 여기선 s1에 저장된 hello전체 크기를 물어보신 것 같습니다. (글자수 + 1(null))*8 이 될 것 같네요. 최대 크기는 메모리가 할당 할 수 있는만큼 할 수 있지않을까요? 심승현 2018.8.17 08:50
  • 답변 감사드립니다.! 알 수 없는 사용자 2018.8.19 10:17

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)