주소와 포인터의 크기
모든 주소와 포인터는 자료형에 관계 없이 크기가 같다.
포인터의 대입 규칙
포인터는 크기가 모두 같으므로 대입 연산을 쉽게 생각할 수 있다. 그런데 규칙이 있다.
- 포인터는 가리키는 변수의 형태가 같을 때만 대입해야 한다.
#include <stdio.h>
int main(){
int a = 10;
int *p = &a;
double *pd;
pd = p; //더블형 포인터에 p의 주소값을 넣는중인데, 타입이 다르므로 오류난다.
//why? 더블형 포인터라고 선언되면 8바이트를 읽어오는 것이다.
//주소값의 크기는 동일하므로 들어갈때는 문제가 없지만,
//이 포인터를 사용해서 실제 값을 불러올떄 문제가 됨.
printf("%lf\\n",*pd);
//pd는 8바이트포인터니깐 주소의 8바이트를 더블형으로 출력하려고한다.
//하지만 내가 실수로 4바이트를 넣었으므로 이상한 4바이트값이 추가로 읽힌다.
return 0;
}
따라서 다른 데이터형에 자료를 넣으려면 형변환을 해야한다!
'SW > C' 카테고리의 다른 글
| 11-2 버퍼를 사용하는 입력함수 (0) | 2025.03.30 |
|---|---|
| 10-1 배열과 포인터 (0) | 2025.03.30 |
| 9-1 포인터 (0) | 2025.03.30 |
| 8-2 문자 저장하기 (0) | 2025.03.30 |
| 8-1 배열 (0) | 2025.03.30 |