본문 바로가기

C

[C언어] 포인터(Pointer) - 1

반응형

포인터(Pointer): 메모리의 주소(Address)를 가리키는 변수이다.

// 포인터는 아래와 같이 다양하게 표현할 수 있다.
int *pa;
int* pa;
int * pa;
int pa[5];

 

연산자: &(주소 연산자, 참조 연산자, 직접 연산자), *(간접 연산자, 역참조 연산자)


#include<stdio.h>

int main(){
   int x = 10;
   int *p = &x;   // 포인터 p(*p)는 변수 x의 주소값을 가리킨다.
                  // 만약 p = NULL이면, 주소값은 0이고 아무것도 가리키지 않는다.
                  // int : 포인터가 가리키는 변수의 데이터형
                  // * : 포인터 수식어
                  // p : 포인터 변수명

   printf("x : %d\n", x);
   printf("*p : %d\n\n", *p);   // *p는 포인터가 가리키는 주소 안의 저장된 값을 출력한다.

   printf("x 주소 : %d\n", &x); // &x는 주소값을 출력한다.
   printf("p : %d\n", p);      // 변수 p에는 주소값이 저장되어 있다.

   return 0;
}

 


#include<stdio.h>

int main(){

   int x = 100, y = 200;
   int *p;

   p = &x;   // pointer 변수 p에 x의 주소값을 저장한다.
   printf("*p = %d\n", *p);
   printf("p = %d\n", p);
   printf("x = %d\n\n", x);

   x += 30;
   printf("*p = %d\n", *p);
   printf("p = %d\n", p);
   printf("x = %d\n\n", x);

   *p += 30;   // pointer p가 가리키는 주소의 저장된 값에 '+30' 해준다.
   printf("*p = %d\n", *p);
   printf("p = %d\n", p);
   printf("x = %d\n\n", x);

   p = &y;
   printf("*p = %d\n", *p);
   printf("p = %d\n", p);
   printf("x = %d\n\n", x);

   return 0;
}

 

반응형