포인터

MySprtlty·2023년 9월 2일
0

C

목록 보기
17/37

🏷️포인터

  • 포인터는 중의적인 의미를 갖는다.
    • pointer to ~라는 타입을 의미한다.
    • 포인터 타입의 (주소값)을 의미하기도 한다.
    • 포인터 대상체(pointer object)를 의미하기도 한다.
  • 포인터는 자신이 가리키는 주소에 저장되어 있는 비트열을 해석하기 위한 방법인 데이터형도, 포인터라는 데이터형과 함께 갖고 있어야 한다.
    • 🔍ex) pointer to int

🏷️포인터의 포인터 (pointer to pointer)

  • 함수 내부에서 매개변수로 포인터 대상체를 넘겨 받을 때, 포인터 대상체의 값을 바꾸려면, 포인터의 포인터를 넘겨줘야 한다.
  • 예를 들면, pointer to int 대상체의 값(int *)을 바꾸고 싶으면, pointer to pointer to int (int **)를 넘겨줘야 한다.
  • 간접지정 연산자(*)를 한 결과는 *의 피연산자 데이터 타입에서 pointer to를 제거한 타입의 lvalue가 된다.
    • 🔍ex)
int a; 
int *pi = &a;
*pi = 3;
  • *pi는 int형 lvalue가 된다. (pi는 pointer to int형)
  • 번지 연산자(&)를 한 결과는 &의 피연산자 데이터 타입에 pointer to를 붙인 타입의 주소값(포인터)가 된다.
    • 🔍ex)
int a; 
int *pi = &a;

&a는 pointer to int의 값이 된다. (rvalue가 아님에 주의하라)

0개의 댓글