제 19장 포인터의 이해 - 예제분석
예제_1) =================================================================================
#include <stdio.h>
int main(void)
{
char a ='a';
int b = 1;
float c =1.3f;
double d =3.5;
// 각 포인트 자료형은 가리키는 자료형에 맞게 선언해줄것을 주의!
char *p1 = &a; // p1는 a를 가리키고 있다.
int *p2 =&b; // p2는 b를 가리키고 있다.
float *p3 =&c; // p3는 c를 가리키고 있다.
double *p4 = &d; // p4는 d를 가리키고 있다.
*p1 =*p1+1; // p1이 가리키는 변수의 값에 1을 더한다. a = 'b'
*p2 =*p2+1; // p2가 가리키는 변수의 값에 1을 더한다. b = 2;
*p3+=1; //*p3=*p3+1과 같다 (p3가 가리키는 변수의 값(c+=1)
*p4+=1; //*p4=*p4+1과 같다 (p4가 가리키는 변수의 값(d+=1)
printf(" a : %c \n", a); // a는 문자기 때문에 아스키코드값이 1증가하면서 b로 된다.
printf(" b : %d \n", b);
printf(" c : %f \n", c);
printf(" d : %lf \n", d);
return 0 ;
}
예제_2) =================================================================================
#include <stdio.h>
int main(void)
{
int a = 10;
int b = 20;
int *p1 = &a; // 포인터 변수 p1은 a를 가리키고 있다. p1은 a의 주소값을 값으로 가진다.
int *p2 = &b; // 포인터 변수 p2는 b를 가리키고 있다. p2는 b의 주소값을 값으로 가진다.
int *temp; // 포인터 변수 temp 선언만!, 현재 어딘가를 가리키고 있음(쓰레기값을 가짐)
(*p1)--; // p1이 가리키는 변수의 값, 즉 a의 값을 -1 연산을 한다.
(*p2)--; // p2가 가리키는 변수의 값, 즉 b의 값을 -1 연산을 한다.
// p1과 p2가 가리키는 대상을 서로 변경
temp = p1; // 포인터변수 temp는 p1의 주소값을 가진다.
p1=p2; // 포인터변수 p2의 주소값을 p1로
p2=temp; // 포인터변수 temp의 주소(즉 p1의 주소)를 p2에 대입
printf("%d, %d \n", *p1,*p2); // p1, p2 가 가리키는 주소가 바뀌게 됨
return 0 ;
}
포인터 공부는 설명도 설명이지만, 직접 메모리 구조를 그려보면서, 주소값, 변수값 등의
변화등 특징을 공부하시는게 더 이해가 빠를겁니다.
소스만 분석하는게 아니고, 직접 그림을 그려보면서 말로 풀이를 해보면서 해보세요~
포인터 강의자료를 참고하세요~
'프로그래밍 > C' 카테고리의 다른 글
제 21장 포인터와 배열의 이해! 함께 이해하기 - 1 (0) | 2010.07.10 |
---|---|
제 20장 포인터의 이해 - 그림표현 (0) | 2010.07.10 |
제 18장 포인터의 이해 - 2 (0) | 2010.07.10 |
제 17장 포인터의 이해 - 예제 (0) | 2010.07.10 |
제 16장 포인터의 이해 - 1 (0) | 2010.07.10 |