잘못된 자료형을 가르키는 포인터변수에 대한 질문
해비치
잘못된 자료형을 가르키는 포인터변수에 대한 질문질문 내용 :
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바이트를 차지하는 변수입니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |
2675356 | 2진수를 10진수로 바꾸려고 하는데 막히네요.. | 풀잎 | 2024-11-17 |
2675297 | Prity 비트 발생기 | 한란 | 2024-11-16 |
2675249 | C책 좀 추천해 주세요 (2) | 딸기우유 | 2024-11-16 |
2675193 | 연습문제 17-1 질문입니다. | 한별나라 | 2024-11-15 |
2675172 | 소스점 | 아이뻐 | 2024-11-15 |
2675146 | 단순 연결 리스트인데 출력결과가 이상하게 나와요. | 찬늘봄 | 2024-11-15 |
2675123 | c언어에서 16진수의 사용에 대한 질문입니다.(정확한답만 달아주시길..) (8) | 데이비드 | 2024-11-15 |