저희가 뒤에 오는 계산서를 시험하게 하십시오:
int var_x;
int* ptrX;
var_x = 6;
ptrX = &var_x;
*ptrX = 12;
printf("value of x : %d", var_x);
컴파일러가 첫번째 선에 의하여 정수를 위해 기억에 있는 공간을 비축하는 원인이 된다. 두번째 선은 컴파일러를 포인터를 저장하기 위하여 공간을 비축하기 위하여 말한다.
포인터는 주소를 위한 저장 위치이다. 제 3 의 선은 scanf 계산서 당신을 생각나게 해야 한다. 주소 "&" 통신수는 컴파일러를 var_x를 저장한 장소에 가도록 말하고, ptrX에 그 후에 저장 위치의 주소를 준다.
에스테리스크 * 가변의 앞에 - 컴파일러를 포인터를 참조를 배제하도록 말하고, 기억에 간다. 그 때 당신은 저 위치에 저장된 가변에 지정을 만들 수 있다. 당신은 가변을 참조 사항를 붙이고 포인터를 통해서 그것의 자료를 접근할 수 있다. 저희가 포인터의 보기를 보게 하십시오:
/* 포인터 사용의 삽화 */
#include <stdio.h>
int main()
{
int index, *pt1, *pt2;
index = 39; /* any numerical value */
pt1 = &index; /* the address of index */
pt2 = pt1;
printf("The value is %d %d %d\n", index, *pt1, *pt2);
*pt1 = 13; /* this changes the value of index */
printf("The value is %d %d %d\n", index, *pt1, *pt2);
return 0;
}
프로그램의 산출은 다음과 같이 표시될 것이다:
The value is 39 39 39
The value is 13 13 13 |
|