프로그래밍과 잡담

[C언어] 기초 5-1 본문

프로그래밍/C,C++, Win32Api

[C언어] 기초 5-1

크레온 2009. 3. 11. 17:01
포인터 연산

포인터도 연산이 가능하다.

막 아무거나 가지고 연산하면 이상한걸 가르키기 때문에 연산을 할때는 배열같은걸 사용할때 사용한다..

배열의 이름은 포인터라 했다..

물론 1차원 배열일때만이다.. 2차원으로 가면 좀 틀려진다..

int array[5];

int *pa;   // pointer array라는 줄임이다.

pa = array;

위에 처럼 하면

pa는 array의 주소값을 가지게 된다..

정확히는 array[0]의 주소값을 가지게 된다.

이걸 가지고 포인터 연산을 한다..

pa++를 하면 pa = pa + 1; 이라는 의미이다.. 여기서 1이라는 의미는 int 형의 크기만큼 이동한다는 소리다..

뭔 소리인가 하면  그림으로 설명..





자  pa = array;를 한 상태의 그림이다 ..

그 다음 그림은  pa ++ 한 그림이다.



0x001에서 0x005로 간 크기는 4byte만큼 간다는 소리이다.

어쨌든 포인터 연산은 일반적인 숫자 1을 더하는 연산이 아니라 
포인터의 데이터 타입만큼 이동한다는 것이다.




포인터의 사용법.


포인터 변수를 선언도 해보고 연산도 해봤다..

인제 사용하는 방법은

int *pa;

*pa를 하면 포인터가 가지고 있는 수를 쓰겠다는 거다..


int a =1;
int *pa;

pa = &a;

printf("%d \n",*pa);

위에와 같이 하면  pa가 가지고 있는 값을 출력하게 된다..
즉, 출력 값은 1이 나오게된다.
그냥 pa만 해버리면 pa의 주소값을 10진수 형태로 해서 나온다..

그리고 값을 변경할때 역시

*pa = 2; 이렇게 해야한다.

사용법은 이걸로 끝..


///////////////////////
 이상한 점이나 궁금한 점은 댓글을 달아주세요
반응형

'프로그래밍 > C,C++, Win32Api' 카테고리의 다른 글

[C언어] 기초 6  (0) 2009.03.11
[C언어] 기초 5-2  (0) 2009.03.11
[C언어] 기초 5  (0) 2009.03.11
[C언어] 기초 4  (0) 2009.03.11
[C언어] 기초 3  (0) 2009.03.11
Comments