SW/C

9-2 포인터 완전정복

seungH 2025. 3. 30. 21:18

주소와 포인터의 크기

모든 주소와 포인터는 자료형에 관계 없이 크기가 같다.

포인터의 대입 규칙

포인터는 크기가 모두 같으므로 대입 연산을 쉽게 생각할 수 있다. 그런데 규칙이 있다.

  1. 포인터는 가리키는 변수의 형태가 같을 때만 대입해야 한다.
#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