티스토리 뷰

비전공자가 C언어를 공부할 때, 가장 어려워하는 부분 중의 하나가 바로 포인터 개념이다. 하지만 C를 공부하면서 그냥 넘어갈 수 없는 중요한 부분이기도하다.

  


포인터 변수는 다른 변수의 주소 값을 저장해서 그 변수를 참조할 수 있다




1
2
int value = 200;
int *ptvalue = &value;
cs

↑ 이 경우에 ptvalue라는 포인터에는 value의 주소값이 저장이 되고, *ptvaluevalue의 값을 호출 할 수 있다.





다음의 짧은 예제만 이해해도 포인터를 활용할 준비에 도움이 될 것이다.


예제코드 :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*************************************************
                  포인터 기초
*************************************************/
#include <stdio.h>
 
int main()
{
 int *pointer = NULL// 0번 주소를 초기값으로 설정
 printf("포인터변수 %p으로 초기값 설정 \n\n", pointer);
 
 int value = 200;
 int *ptvalue = &value; // value 변수를 가르키는 포인터
 int **dptvalue = &ptvalue; // 'value 변수를 가르키는 포인터'를 가르키는 포인터 (2중 포인터)
 
 printf("value의 주소는 %d, 다음 주소는 %d \n", ptvalue, ptvalue+1); // ptvalue에 저장된 값은 value의 주소 , int형 포인터는 +4
 printf("value : %d = %d \n", value, *ptvalue); // value 값과 *ptvalue는 같은 값을 가르킴 
 printf("포인터 변수의 크기는 %d \n\n"sizeof(ptvalue));
 
 printf("value 값 : %d, value의 주소 값 : %d, ptvalue 포인터의 주소값 : %d \n\n"**dptvalue, *dptvalue, dptvalue);
 
 
 char data = 'a';
 char *ptdata = &data;
 
 printf("data의 값은 : %c , data의 주소는 %d, 다음 주소는 %d \n"*ptdata, ptdata, ptdata+1); // char형 포인터는 +1
 printf("포인터 변수의 크기는 %d \n\n"sizeof(ptdata));
}
cs





실행결과 :



주소 값은 실행할 때마다 바뀔 수 있다. 따라서 주소 값이 얼마냐는 중요하지 않다.


댓글
반응형
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함