잘못된 자료형을 가르키는 포인터변수에 대한 질문
해비치
잘못된 자료형을 가르키는 포인터변수에 대한 질문질문 내용 :
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바이트를 차지하는 변수입니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2673602 | 비트연산 연습하다 문제생겨서 올립니다. (2) | 연하얀 | 2024-11-01 |
2673576 | 질문이요...ㅠ | 미즈 | 2024-10-31 |
2673497 | 입력받아 출력하는 거 질문이요 (6) | 한누리 | 2024-10-31 |
2673438 | 배열로 입력받는것 질문 드릴게요 (3) | 들빛 | 2024-10-30 |
2673410 | 초기값 변환값 도와주세요 | 희1미햬 | 2024-10-30 |
2673384 | 저기 문자열 비교를 하려 하는데.. | Sonya | 2024-10-30 |
2673333 | 한글 영어 구분 (3) | 찬놀 | 2024-10-29 |
2673306 | 컴파일 시키면 한글이 깨집니다. (1) | 해지개 | 2024-10-29 |
2673278 | c언어 문자열 거꾸로 출력질문 | 물고기자리 | 2024-10-29 |
2673255 | 재귀함수 팩토리얼 | 사랑 | 2024-10-28 |
2673232 | 쉬운건데요.. (3) | 유우 | 2024-10-28 |
2673209 | 잘못된 자료형을 가르키는 포인터변수에 대한 질문 (5) | 해비치 | 2024-10-28 |
2673182 | 구조체에 대해서 질문 드립니다. (1) | 분홍이 | 2024-10-28 |
2673129 | C언어 포인터 부분 질문좀 부탁드립니다. (4) | 호습다 | 2024-10-27 |
2673105 | Atomic fetch sub | 등대 | 2024-10-27 |
2673014 | 소수합구하기 알고리즘이요. (1) | 크나 | 2024-10-26 |
2672987 | 어디가 틀렸는지 지적좀 해주세여... | 미련곰팅이 | 2024-10-26 |
2672934 | 숫자를 입력해서 지폐의 종류별로 갯수구하는 프로그램인데요.. | 개굴츼 | 2024-10-25 |
2672908 | 파일 오픈 출력 | 겨슬 | 2024-10-25 |
2672855 | 연결리스트를 이용한 관리 프로그램 중 리스트삭제 | 해비치 | 2024-10-25 |