포인터는 C 및 C ++ 프로그래밍의 강력한 기능입니다. 포인터를 배우기 전에 C 프로그래밍의 주소에 대해 알아 보겠습니다.
C의 주소
프로그램에 변수 var가있는 경우 &var
는 메모리의 주소를 알려줍니다.
scanf()
함수를 사용하는 동안 주소를 여러 번 사용했습니다.
여기에서 사용자가 입력 한 값은 var 변수의 주소에 저장됩니다. 실제 예를 들어 보겠습니다.
출력
var: 5 address of var: 2686778
참고 : 위 코드를 실행하면 다른 주소를 얻을 수 있습니다.
C 포인터
포인터 (포인터 변수)는 값이 아닌 주소를 저장하는 데 사용되는 특수 변수입니다.
포인터 구문
포인터를 선언하는 방법은 다음과 같습니다.
여기에서 int
유형의 포인터 p를 선언했습니다.
당신 이러한 방식으로 포인터를 선언 할 수도 있습니다.
포인터 선언의 또 다른 예를 살펴 보겠습니다.
여기서는 포인터 p1과 일반 변수 p2를 선언했습니다.
포인터에 주소 할당
예를 들어 보겠습니다.
여기서 5는 c 변수에 할당됩니다. 그리고 c의 주소는 pc 포인터에 할당됩니다.
포인터가 가리키는 사물의 값 가져 오기
포인터가 가리키는 사물의 값을 가져 오기 위해 *
연산자. 예 :
여기서 c
의 주소는 pc 포인터에 할당됩니다. 해당 주소에 저장된 값을 가져 오기 위해 * pc를 사용했습니다.
참고 : 위의 예에서 pc는 *pc
가 아니라 포인터입니다. *pc = &c
와 같은 작업을 할 수 없으며해서는 안됩니다.
그런데 *
는 역 참조 연산자 ( 포인터로 작업 할 때). 포인터에서 작동하고 해당 포인터에 저장된 값을 제공합니다.
포인터가 가리키는 값 변경
예를 들어 보겠습니다.
c의 주소를 pc 포인터에 할당했습니다.
그런 다음 c의 값을 1로 변경했습니다. pc와 c의 주소 이후 *pc
는 1을 제공합니다.
다른 예를 들어 보겠습니다.
c의 주소를 pc 포인터에 할당했습니다.
그런 다음 *pc = 1;
<을 사용하여 *pc
를 1로 변경했습니다. / div>. pc와 c의 주소가 같으므로 c는 1이됩니다.
한 가지 더 예를 들어 보겠습니다.
처음에는 c의 주소는 pc = &c;
를 사용하여 pc 포인터에 할당됩니다. c는 5이므로 *pc
는 5를 제공합니다.
그런 다음 d의 주소는 pc = &d;
를 사용하여 pc 포인터에 할당됩니다. d는 -15이므로 *pc
는 -15를 제공합니다. .
예 : 포인터 작업
실제 예를 들어 보겠습니다.
출력
Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2
프로그램 설명
-
int* pc, c;
여기 , 포인터 pc와 일반 변수 c (둘 다int
유형)가 생성됩니다.
pc와 c는 초기에 초기화되지 않았으므로 포인터 pc는 주소 없음 또는 임의의 주소. 그리고 변수 c에는 주소가 있지만 임의의 가비지 값을 포함합니다. -
c = 22;
이것은 변수 c에 22를 할당합니다. 즉, 22는 변수 c의 메모리 위치에 저장됩니다. -
pc = &c;
변수 c의 주소를 포인터 pc에 할당합니다. -
c = 11;
11을 변수 c에 할당합니다. -
*pc = 2;
이것은 포인터 pc가 가리키는 메모리 위치의 값을 2로 변경합니다.
포인터로 작업 할 때 흔히 발생하는 실수
포인터 pc가 c의 주소를 가리 킵니다. 그런 다음
다음은 포인터 구문 초보자가 자주 혼동하는 예입니다.
int *p = &c;
를 사용하십니까?
그 이유는
가 >
두 경우 모두 포인터 p
(*p
) 및 &c
할당.
이 혼동을 피하기 위해 다음과 같은 문을 사용할 수 있습니다.
이제 포인터가 무엇인지 알았으니 포인터는 다음 튜토리얼에서 배열과 관련이 있습니다.