간만에 다시 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 |