잘못된 자료형을 가르키는 포인터변수에 대한 질문
해비치
잘못된 자료형을 가르키는 포인터변수에 대한 질문질문 내용 :
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번 맞나요,,?
-
희나리 2024-10-28
랜덤이라기보다는... 스택에 있는 다른 데이터의 값입니다.
대체로 함수의 로컬 변수가 스택에 들어갈 때는 먼저 선언된 것이 먼저 들어가서 뒤쪽에 있기 때문에 첫번째 변수 뒤에 무엇이 있을 지는 컴파일러 구현 방식을 알아야 합니다. -
소1유물 2024-10-28
님아 답변 너무감사드립니다!! 진짜 감사!!ㅋ 옜날책 맞아요. 선배책쓰는데 굉장히 옜날꺼같음;;
그런데 한가지더 궁금한점이 있어요. int형은 2바이트이기 때문에, 2바이트로 저장된값을 4바이트에서 읽을 때 나머지 뒤에 2바이트값을 알 수 없기때문에 알수없는값이라고 하셨는데요~, 4바이트공간에서 입력되지않은 2바이트는 컴퓨터 스스로가 랜덤으로 비트값을 정하는것인가요? 예를들어
1001100001111100(원래값)1001100000111100(컴퓨터 -
쥬디시어스 2024-10-28
1. 넣을 수 없다는게 아니라 (float *로 선언했으므로) 포인터가 가리키는 주소값에서 부터 4바이트를 읽어들이게 되는데 i는 2바이트밖에 안되기 때문에 그 뒤의 알 수 없는 2바이트까지 더 읽어들이므로 357이란 값이 나온다는 보장이 절대 없다는 얘깁니다.
2. 5번도 위에서 설명한 이유로 357에 1을 더하는게 아니라 알 수 없는 값에 1을 더하게 되겠죠. -
가든 2024-10-28
엄밀히 말하면 int가 반드시 4byte는 아닙니다.
거의 4바이트이긴 하지만요.
옛날 책인가 보군요. 예를 들면 Turbo C에서는 int가 2바이트입니다. -
소1유물 2024-10-28
int는 float와 같이 4바이트를 차지하는 변수입니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2687274 | for문 선언 질문드립니다. (2) | 영빈이 | 2025-03-07 |
2687245 | 첨에 출력화면으로 다시 가고픈데... | 엄마몬 | 2025-03-06 |
2687213 | C 예제책 추천좀 해주세요^^ (4) | 아담 | 2025-03-06 |
2687183 | strcmp함수 사용 관련 | 에녹 | 2025-03-06 |
2687153 | c언어 포인터관련 질문 | 가온누리 | 2025-03-06 |
2687103 | DLL 파일 | 초코맛캔디 | 2025-03-05 |
2687072 | 키보드로부터 데이터를 입력받아 계산하기 질문 | 김슬픔 | 2025-03-05 |
2687045 | scanf에대해질문좀드릴꼐요 (2) | 마음새 | 2025-03-05 |
2687016 | 군대입니다..실행유무좀 알려주세요 | 가림 | 2025-03-04 |
2686989 | 동적할당 에러가 나네요 이유를 모르겠어요. (4) | 밝은빛누리예 | 2025-03-04 |
2686964 | 꼭좀알려주세요 ㅠㅠ 정렬한 데이터 검색해서 몇번째 배열에 있는지 | 메이 | 2025-03-04 |
2686882 | 구조체,포인터 부분 질문입니다 ㅠ (2) | 정훈 | 2025-03-03 |
2686857 | 파일입출력에 관한 질문입니다 (2) | 철죽 | 2025-03-03 |
2686826 | swap관련 코드작성.. (1) | 물 | 2025-03-03 |
2686794 | 아스키관련질문드려요 | 테이 | 2025-03-02 |
2686687 | 파일 입출력시 다른이름으로 저장하고싶습니다. (2) | 참이 | 2025-03-01 |
2686663 | 달팽이 형태의 배열을 만들어주는 프로그램을 작성할려는대.... (5) | 얀별 | 2025-03-01 |
2686635 | 간단한 게임을 만드려고 하는데 어떻게 진행할지 모르겠네요.... | 누리봄 | 2025-03-01 |
2686610 | 메뉴만드는것 질문좀드릴게요 | 들찬길 | 2025-03-01 |
2686583 | 학생 성적 구하기 잘못된값이 나옵니다.; | 행운아 | 2025-02-28 |