본문 바로가기

2014 C/7월

오후 C언어 특강 - 포인터

  • 보통 주소는 컴파일러가 관리하지만 heap영역의 주소는 OS가 관리한다.
  • %p - 8자리의 주소를 출력하는 주소연산자.
  • 심벌테이블에는 변수이름과 자료형 , 그리고 이 변수가 할당받은 메모리의 주소가 기록된다.
  • 변수 x 앞에 붙은 &(ampersand) 는 주소연산자이다.



void main()
{
     int x = 7
     int * xp = &x;

     *xp = 8; // 변수 x 의 값의 수정

     printf ("address of x : %p\n", &x);
}

결과        -> address of x : 0012FF7C 



void main()
{
     int x = 7
     int  &x;

     *
0012FF7C = 8;

     printf ("address of x : %p\n", &x);
}

결과        -> ERROR

  • 컴파일러는 '* 0012FF7C = 8' '포인터주소 = 8' 이 아닌 곱셈 연산자로 해석한다.
  • 컴파일 할 때 2항연산자인 곱셈을 일항연산 (ex : A = *8) 으로 작성한 건줄 알아서 ERROR가 됨