티스토리 뷰
비전공자가 C언어를 공부할 때, 가장 어려워하는 부분 중의 하나가 바로 포인터 개념이다. 하지만 C를 공부하면서 그냥 넘어갈 수 없는 중요한 부분이기도하다.
포인터 변수는 다른 변수의 주소 값을 저장해서 그 변수를 참조할 수 있다.
1 2 | int value = 200; int *ptvalue = &value; | cs |
↑ 이 경우에 ptvalue라는 포인터에는 value의 주소값이 저장이 되고, *ptvalue로 value의 값을 호출 할 수 있다.
다음의 짧은 예제만 이해해도 포인터를 활용할 준비에 도움이 될 것이다.
예제코드 :
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 |
실행결과 :
주소 값은 실행할 때마다 바뀔 수 있다. 따라서 주소 값이 얼마냐는 중요하지 않다.
'Programming Languages > C++ & Algorithm' 카테고리의 다른 글
재귀 함수를 이용한 부분 집합 생성 알고리즘 (0) | 2020.09.18 |
---|---|
[Algorithm] ios::sync_with_stdio(0); C++ 입출력 속도 (0) | 2020.09.17 |
_CrtisValidHeapPointer(block) 런타임 에러 (0) | 2020.06.04 |
[C언어] 난수 생성하기 _ rand(), srand() 함수 활용 (0) | 2018.10.21 |
[C언어] #define 활용 - 매크로 (0) | 2018.10.15 |
댓글