수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

잘못된 자료형을 가르키는 포인터변수에 대한 질문

환찬

2023.04.01

잘못된 자료형을 가르키는 포인터변수에 대한 질문질문 내용 :

int i;

float *fptr;

fptr=&i;

i=357;

*fptr=*fptr+1;
q1)fptr은 float 형의 포인터변수이기 때문에 4바이트의 공간을 실수값으로 해석한다. 따라서 변수 i가 차지하는 공간을 넘어선 2바이트를 포함한 값을 가리키기 때문에 *fptr의 값은 357이 아니라 예측할 수 없는 값을 가진다

여기서 변수 i선언시 2바이트 공간이 할당되는데, 여기서 357값을 초기화시킬 시, 이 값은2바이트의 비트값으로 저장되는데포인터변수 *float에 다시 이 주소를 저장하려니 4바이트다. 그래서 2바이트비트값은 4바이트에 넣을 수 없다? 이런말인가요?? 이해가되지않아서요. 왜 2바이트를 4바이트에 넣으면안되나요? 꼭 같은크기(바이트)이어야 하는건가요? 아마도 메모리공간에대한 이해가 부족한듯,,,,,,

q2)

1. 일단 *fptr 을 float 형으로 선언했으니 4바이트 공간 마련.

2. i 는 int 형 선언이니 2바이트 공간 마련.

3. fptr 의 값을 i의 주소값으로 넣는다.

4. i값을 357로 초기화

5.*fptr=*fptr+1 은 포인터변수fptr 값에 +1을 한 값으로 수정. 즉, 변수 i 값을 357+1 로 수정.여기서 5번 맞나요,,?

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 분홍이

    랜덤이라기보다는... 스택에 있는 다른 데이터의 값입니다.
    대체로 함수의 로컬 변수가 스택에 들어갈 때는 먼저 선언된 것이 먼저 들어가서 뒤쪽에 있기 때문에 첫번째 변수 뒤에 무엇이 있을 지는 컴파일러 구현 방식을 알아야 합니다.

  • 나빛

    님아 답변 너무감사드립니다!! 진짜 감사!!ㅋ 옜날책 맞아요. 선배책쓰는데 굉장히 옜날꺼같음;;

    그런데 한가지더 궁금한점이 있어요. int형은 2바이트이기 때문에, 2바이트로 저장된값을 4바이트에서 읽을 때 나머지 뒤에 2바이트값을 알 수 없기때문에 알수없는값이라고 하셨는데요~, 4바이트공간에서 입력되지않은 2바이트는 컴퓨터 스스로가 랜덤으로 비트값을 정하는것인가요? 예를들어
    1001100001111100(원래값)1001100000111100(컴퓨터

  • 콩알눈

    1. 넣을 수 없다는게 아니라 (float *로 선언했으므로) 포인터가 가리키는 주소값에서 부터 4바이트를 읽어들이게 되는데 i는 2바이트밖에 안되기 때문에 그 뒤의 알 수 없는 2바이트까지 더 읽어들이므로 357이란 값이 나온다는 보장이 절대 없다는 얘깁니다.

    2. 5번도 위에서 설명한 이유로 357에 1을 더하는게 아니라 알 수 없는 값에 1을 더하게 되겠죠.

  • 뿡뿡몬

    엄밀히 말하면 int가 반드시 4byte는 아닙니다.
    거의 4바이트이긴 하지만요.

    옛날 책인가 보군요. 예를 들면 Turbo C에서는 int가 2바이트입니다.

  • 아이폰

    int는 float와 같이 4바이트를 차지하는 변수입니다.

번호 제 목 글쓴이 날짜
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
2699415 파일//read//와 배열 아란 2025-06-25
2699386 구조체 안에 일부분만 char 배열에 복사하려면 어떻게 해야하나요? (1) 미즈 2025-06-25
2699361 연결리스트 정렬하는 부분에 대해서 질문 드립니다 아이처럼 2025-06-25
2699304 [기초]아직 안주무시는분 계신가요..?포인터배열? 좀 도와주세요. 놀리기 2025-06-24
2699272 printf() 함수이용해서 프로그램 만들기 질문요! (5) 다가 2025-06-24
2699221 PUSH와 POP코드를 더 간단하게 어떻게 해야할까요? 파라미 2025-06-24
2699192 설치오류가 자꾸 나요 한번봐주세여~ (1) 소녀틳향기 2025-06-23
2699161 for loop안에 있는 if문 (9) Orange 2025-06-23
2699105 링크더리스트 이전 링크값 출력함수. 꼬꼬마 2025-06-23
2699078 정수를 한자리씩 배열에 담는 법은 어떻게 하나요.. (4) 귀염포텐 2025-06-22
2699024 C언어 공부하려는데 도와주세요!!! (2) 달님 2025-06-22
2698994 날짜 계산하는 C 코드 짜고 있는데 꽉 막혀서 질문드립니다.. (6) 별 2025-06-22
2698967 파일삭제 윈도우 폴더까지 접근하게하는 함수가 뭔가요 (2) 샤인 2025-06-21
2698938 c언어 메모리질문 (3) 나래 2025-06-21
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com