본문 바로가기

Embeded C

4_3 포인터 변수


본격적으로 포인터에 들어가는 부분입니다.
포인터변수 또는 참조변수는 메모리의 주소를 값으로 가지는 변수로, 메모리에 직접 접근할때 사용합니다.
C에서 포인터변수의 크기는 4바이트 입니다. 즉 변수의 주소가 4바이트라는 말과 같습니다.
포인터변수 ip가 변수i의 주소를 가지고 있을 경우, ip는 i를 가리킨다고 합니다.
포인터변수의 선언에서는 포인터변수가 가리키는 자료형을 선언해주어야 합니다.

int형일 경우 int x;라 할때

 int *xp

라고 합니다

//그럼 포인터 변수의 선언과 printf문으로 변수의 주소와 값을 나타내어 봅시다

 #include <stdio.h>

int main()
{
    int x;
    int *xp;         //xp는 int 형의 포인터 변수

    x = 7;           //x의 초기화
    xp = &x;      //xp가 x의 주소값으로 초기화

    printf("address of x : %p\n", &x);    //변수 x의 주소

    printf("value of x : %d\n", x);           //변수 x의 값

    printf("address of x : %p\n", &xp); //포인터변수 xp의 주소

    printf("value of xp : %p\n", xp);      //포인터변수 xp의 값

    printf("value of *xp : %d\n", *xp);  // xp가 가리키는 곳의 값
    return 0;
}


결과>>

address of x : 0012FF78
value of x : 7
address of x : 0012FF7C
value of xp : 0012FF78
value of *xp : 7


Symbol table

type

name

address

 int

 0012FF78

 int *

xp

 0012FF7C

int = 7

설명>>
정리해보면 메모리에 실제 들어있는 값만 들여다 보면 됩니다

* 변수 x에 0012FF78라는 주소에 현제 7이라는 값이 들어가 있습니다. 그것도 int형으로...

* 변수 xp에 0012FF7C라는 주소에는 현제 x의 주소인 0012FF78이 값으로 들어가있습니다.

'Embeded C' 카테고리의 다른 글

5_2 함수의 호출과 실행(작성중)  (0) 2011.04.20
5_1 함수  (0) 2011.04.19
4_2 변수의 값과 주소  (0) 2011.04.19
4_1 포인터 개념잡기(작성중)  (0) 2011.04.18
Pull Up/Down resistor(풀업저항과 풀다운저항)  (0) 2011.03.28