◇ 포인터 ◇
*** 포인터 변수란 『 변수를 가리키는 변수 』, 변수를 가리킨다는 것은 그 어드레스를 기억하는 것을 의미한다.
*** int형의 변수를 가리키는 포인터 변수 ptr은 다음과 같이 선언한다.
int * ptr; // ptr은
*** 포인터 변수에 * 연산자를 붙이면 그 포인터 변수가 가리키는 변수의 실제 내용(* 연산자는 포인터에만 적용할 수 있다).
*** *연산자는 포인터 변수가 가리키고 있는 변수를 간접적으로 액세스하기 위한 연산자이기 때 문에 간접 연산자라 한다.
int x;
int *ptr; // ptr이 포인터 변수라는 것과 *ptr은 int형이라는 두 가지를 함께 생각
int z[10];
int * p;
p = &z[0]; // 배열에 & 연산자를 붙인 것이 아니고, 배열의 한 요소에 & 연산자를 적용한 것
*** C언어에서는 함수의 호출을 값에 의한 호출로 수행한다. 호출하는 쪽은 실인자로 값을 넘겨주 고 호출되는 쪽은 형식인자로 받은 값의 복사본을 사용한다.
#include
void swap(int * x, int * y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
main()
{
int a = 5, b = 3;
swap(&a, &b);
printf("a = %d, b = %dn",a,b);
return 0;
}
출력
a = 3, b = 5
*** swap함수처럼 2개 이상의 값을 돌려주고 싶을 때는 반드시 포인터를 사용해야 한다.
int i;
scanf("%d",&i);
※ C언어에서는 값에 의한 호출만을 사용하므로 『 인자의 값을 변경할 때에는 포인터형을 사 용하여 주고 받음을 해야하기 』 때문에 &를 붙이지 않으면 안된다.
◇ 포인터와 배열 ◇
ⓛ void func(int a[10]) ※ 컴파일될 때 어느 것이든, a는 int의 포인터로 해석된다
*** 일반적으로 포인터 변수 ptr에 대해서 ptr + i는 ptr이 가리키고 있는 요소의 i개 뒤의 요소를 가리키고 ptr - i 는 ptr이 가리키고 있는 요소의 i개 앞의 요소를 가리킨다.
*** *는 그 포인터 변수가 가리키는 변수의 실제 내용을 나타내는 연산자이기 때문에 *(ptr + 1) 은 a[1]의 다른 명칭이 된다.
※ a[0]과 *ptr은 같은 내용.
a[2]와 *(ptr + 2)는 같은 내용.
a[9]와 *(ptr + 9)는 같은 내용.
※ ptr + i 는 a[i]의 어드레스이고 *(ptr + i)는 a[i]의 다른 명칭이 된다.
※ 배열 a[n]에 대하여 a[i]를 *(a + i)라고 쓸 수 있다(&a[i]는 a + i).
포인터 p에 대하여 *(p + i)를 p[i]라고 쓸 수 있다.
====================================================================================
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
309 | 자바 기초 로직 ˙ [2] | dnajs | 2006.09.16 | 540 |
308 | MSN 주소를 알려주세요. [11] | MrGeek | 2006.09.13 | 938 |
307 | MFC 색상표 [1] | 피군 | 2006.09.12 | 352 |
306 | 연산자 종류 / 연산자 및 제어구조 [2] | 연지 | 2006.09.07 | 508 |
» | 포인터변수. [1] | 연지 | 2006.09.07 | 245 |
304 | 게임에서 마우스로 게임하기 [10] | 브레인 | 2006.09.06 | 2472 |
303 | 게이지바 스크립트 [6] | 브레인 | 2006.09.06 | 4371 |
302 | 미니맵을 만들어 보자 - 스크립트 - [11] | 브레인 | 2006.09.06 | 1922 |
301 | 나의 4차원적 아이디어들.-1- [15] | 시엔 | 2006.09.04 | 707 |
300 | 오늘 개강. [3] | 아란 | 2006.08.29 | 261 |
299 | 턴알에서 뽑기로 공격해보자. [11] | z-z | 2006.08.28 | 589 |
298 | 임시변수 없이 스왑(swap)하기~ [2] | 케이코냥이 | 2006.08.27 | 220 |
297 | 곧 [3] | 초코군 | 2006.08.25 | 203 |
296 | 콤보 스크립트 [7] | 귀여븐닌자 | 2006.08.23 | 1624 |
295 | MG F91이 와서... [2] | 아란 | 2006.08.22 | 223 |
294 | 점점 개강이 다가옵니다. [1] | 아란 | 2006.08.21 | 212 |
293 | srpg의 이동 시스템 [6] | 창공의곰팅이 | 2006.08.20 | 735 |
292 | #pragma warning [3] | 피군 | 2006.08.20 | 312 |
291 | 잡담반이 돌아왔습니다-_-;; [3] | 아란 | 2006.08.20 | 213 |
290 | 대입/쉬프트/삼항/cast/콤머/sizeof 연산자 (수정) [4] | 연지 | 2006.08.18 | 291 |