포인터 변수의 값은 메모리 상의 번지임.
번지는 양의 정수이므로 정수를 직접 대입할 수도 있음(다만 형변환을 해주어야 함).
예: int *ptr = (int *)1234;
ptr의 값은 1234이고 메모리 상의 번지를 의미함.
ptr이 가리키는 번지(1234번지)에 있는 내용을 읽거나 쓰려면 *ptr을 사용해야 함.
예: printf("%d",*ptr); *ptr = 456;
만약 아래와 같이 하면 원하는 결과가 나오지 않을 것이고 문제가 발생할 수 있음.
{
int *ip; // 이 상태에서는 ip의 값은 쓰레기 값임.
*ip = 10; // 메모리 상의 어떤 번지에 10이 기록될른지?
}
포인터 변수에 값(번지)을 정수로 직접 대입해서 사용하는 것은 안전하지 않을 뿐만 아니라 거의 사용할 일이 없을 것임.
일반적으로 포인터 변수에 값을 대입할 때는 아래와 같이 다른 변수의 번지를 대입함.
예:
int i;
int *ptr = &i;
|