-
c언어 포인터Programming/C 2016. 5. 2. 20:20
포인터
- 포인터를 이용하면 메모리에 직접 접근이 가능하다.
- C언어가 Low 레벨 언어의 특성을 지닌다고 이야기하게 만든 장본인
- C언어에서는 시작번지만을 가지고 위치를 표현한다. 왜냐면 예를 들어 int형 변수는 4바이트이므로 변수의 끝은 쉽게 계산이 가능하기 때문이다.
- 예)
- int형 변수 num은 0x12ff76번지에 할당되어 있습니다.
- 위의
0x12ff76
역시 정수이므로 저장이 가능한 값이다. 이 값을 저장하기 위해 마련된 변수가 바로 포인터 변수 이다.
- 포인터 변수란 메모리의 주소 값을 저장하기 위한 변수이다.
- '포인터'는 '변수 형태의 포인터'와 '상수 형태의 포인터'를 어우르는 표현인데 대부분이 포인터 변수와 관련이 있어 포인터라 하면 우선 '포인터 변수'를 연상하면 된다.
포인터 변수와 & 연산자
정수 7이 저장된 int형 변수 num을 선언하고 이 변수의 주소 값 저장을 위한 포인터 변수 pnum을 선언하자. 그리고 나서 pnum에 변수 num의 주소 값을 저장하자.
int main(void) { int num = 7; int * pnum; // 포인터 변수 pnum의 선언 pnum = # // num의 주소 값을 포인터 변수 pnum에 저장 .... }
- & 연산자는 오른쪽에 등장하는 피연산자의 주소 값을 반환하는 연산자
포인터가 가리키는 메모리를 참조하는 * 연산자
* 연산자
는 포인터가 가리키는 메모리 공간에 접근할 때 사용하는 연산자이다.
#include <stdio.h> int main(void) { int num1 = 10, num2 = 20; int * ptr1 = &num1; int * ptr2 = &num2; int * temp; (*ptr1) += 10; (*ptr2) -= 10; temp = ptr1; ptr1 = ptr2; ptr2 = temp; printf("ptr1이 가리키는 변수에 저장된 값: %d \n", *ptr1); printf("ptr2가 가리키는 변수에 저장된 값: %d \n", *ptr2); }
'Programming > C' 카테고리의 다른 글
C언어 포인터 배열 (0) 2016.05.02 C언어 변수 (0) 2016.05.02 1차원 배열 (0) 2016.04.30 도전 프로그래밍1 (0) 2016.04.30 함수 (0) 2016.04.30 - 포인터를 이용하면 메모리에 직접 접근이 가능하다.