본문 바로가기

C언어

이중 포인터 간단정리

간만에 다시 C를 써야되는 일이 발생해서 요즘 쓰고있는데... 포인터를 또 까먹어서리 정리해 봤습니다.

#include <stdio.h>
void main(){
  int a1= 1;
  int *a2 = &a1;
  int **a3 = &a2;
  printf("a1:%d \n*a2:%d a2:%d \n**a3:%d *a3:%d a3:%d \n",a1,*a2,a2,**a3,*a3,a3);
}

 

[실행결과]

 

우선 a1은 1입니다. (여기서 부터 헷갈리면 난감함...)

 

a2는 a1의 주소값을 가지고 있고, *a2는 a2가 가지고 있는 주소값이 가리키는 값 즉, a1이므로 1을 갖습니다.

 

a3는 a2의 주소값을 가지고 있습니다. *a3는 a3가 가지고 있는 주소값이 가리키는 값 즉, a2이므로 a1의 주소값을 갖습니다.

 

**a3는 *a3가 가지고있는 주소값이 가리키는 값 즉, a1이므로 1을 갖습니다.

 

이상 간단정리(?)였습니다. [ 짧긴한데 설명은 디따 지저분한 이 느낌은 뭘까... -.-;]

'C언어' 카테고리의 다른 글

파일 생성,권한 변경, 소유자 변경  (0) 2016.10.11
void value not ignored as it ought to be  (0) 2015.08.04
2의 보수를 이용한 부호 바꾸기  (0) 2014.09.26
컨볼루션 인코더 & 비터비 디코더 ver 0.5  (0) 2014.09.04
QPSK  (0) 2014.09.04