336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

포인터란?

 다른 변수 혹은 그 변수의 메모리 공간주소를 가리키는 변수를 말한다. 포인터가 가리키는 값을 가져오는 것을 역참조라고한다. 

 변수의 주소값을 보기 위해서 '&' 라는 기호를 사용한다. 변수가 x 라고 선언이 된 후 x변수의 주소를 사용하려면 &x 를 사용하면 된다. 그리고 주소값이 있고 주소값에 저장된 값을 사용하고 싶을 경우 '*' 기호를 사용하여 *(&x) - 변수 x의 주소에 저장된 값을 사용하겠다는 의미가 된다. 아래 코드문은 앞선 내용을 정리한 것이다. 


1
2
3
4
5
6
7
8
int main(){
  int x = 3;
  // x ;  변수 x 의 값을 뜻한다.
  // &x ;  변수 x의 주소값을 뜻한다. 
  // *(&x) ; 변수 x의 주소값에 저장된 값을 참조하겠다.
 
  return 0;
}
cs


1
2
3
4
5
6
7
8
9
10
int main(){
  int x = 3
  // x 라는 변수를 사용하겠다. int형으로, 초기화는 3으로
  
  int* ptrint = &x; 
  // ptrint 라는 변수를 사용하겠다.
  // int*형으로  int pointer, 초기화는 변수 x의 주소로
  
  return 0;
}
cs

위의 코드는 아래 그림과 같은 모습을 뜻한다.



변수는 저장하고 있는 주소가 있으므로, 해당 변수 포인터는 같은 형(타입)의 변수를 저장할 수 있다. 그렇기 때문에 int형인 3이라는 값을 저장하고 있는 x 변수를 int 포인터형인 ptrint는 x의 주소값(&x)를 저장할 수 있다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(){
  int x = 3// x 라는 변수를 사용하겠다. int형으로, 초기화는 3으로
  int* ptrint = &x; // ptrint 라는 변수를 사용하겠다. int*형으로  int pointer
  
  // add code
  printf("%d\n",&x); // (1) x의 주소값(&x)을 십진수 형식으로 출력한다.
  printf("%d\n",x); // (2) x의 값을 십진수 형식(%d)으로 출력한다.
  printf("%d\n",ptrint); // (3) ptrint에 저장된 주소값을 십진수 형식으로 출력한다.
  printf("%d\n",&ptrint); // (4) ptrint의 주소값(&ptrint)을 십진수 형식으로 출력한다.
  printf("%d\n",*ptrint); // (5) ptrint에 저장된 주소값을 참조하여 출력한다. 
  printf("%d\n",*(&x)); // (5) 위 코드와 같은 내용을 출력한다. 
  
  return 0;
}
cs

위 코드에서 출력하는 값은 
(1) x 변수의 주소
(2) x 변수가 저장한 값
(3) ptrint 가 저장한 변수의 주소
(4) ptrint 의 주소
(5) ptrint 가 저장한 주소를 참조, 저장되어 있는 주소의 저장값
을 출력하는 것이다. 


'2016 > C_tutoring' 카테고리의 다른 글

[C]포인터 예제  (0) 2017.07.22

+ Recent posts