엘리베이터의 버튼 역할을 하는 것이 포인터.
포인터란 한마디로 메모리의 주소를 의미.
포인터는 메모리의 주소(아파트의 층별 위치)를 저장하는 공간이므로 실제 메모리의 내용(각 층별 집의 평수)이 아닌 주소값(층별 위치)이 저장됩니다.
자료형_*포인터_변수 이름;
C언어에서는 모든 자료형에 대해 포인터를 만들 수 있다. 그 이유는 자료형마다 서로 다른 바이트를 갖고 있기 때문에 그 메모리 영역을 가르키는 포인터는 자료형마다 달라지는 것입니다. 하지만 포인터가 가르키고 있는 자료형의 크기는 자료형의 종류마다 1바이트 또는 4바이트, 어떤 경우에는 8바이트지만 포인터의 크기는 같게 4바이트이다.
포인터 변수 = & 일반 변수
int data = 10; //정수형 변수 data선언과 초기화
int *ptr // 정수형 포인터 ptr선언
ptr = &data; //변수 data의 주소를 포인터 ptr에 저장
짤린부분은 int data = 10;
- int data =10; 을 실행하면 메모리의 임의의 위치에 10이라는 값을 저장.
- int *ptr; 포인터 변수 ptr을 위한 자리를 메모리에 마련한다.
- ptr = &data; 포인터 변수에 다른 변수 주소 대입.
- 포인터의 사용 용도.
모드 | 설명 | 사용 예 |
포인터 변수 | 일반 변수와 같은 형식으로 선언하되 변수의 이름 앞에 *를 붙임니다. | int *ptr;; char *ptr; float *ptr; |
포인터 변수에 다른 변수 주소 대입 | 일반적인 변수 이름 앞에 &를 붙여서 포인터 변수에 대입합니다. | int *ptr = &data; |
포인터 변수가 가르키는 곳의 값 사용 | 포인터 변수 이름 앞에 *를 붙여서 사용합니다. | data = *ptr;(포인터 변수에서 값을 읽는 경우) *ptr = data;(포인터 변수에 값을 쓰는 경우) |
화면 캡처: 2010-05-26, 오전 3:23
화면 캡처: 2010-05-26, 오전 3:24
화면 캡처: 2010-05-26, 오전 3:32
화면 캡처: 2010-05-26, 오전 3:32
사용시 주의사항.
int *ptr >>>덜렁 이것만 있고 가르키는 곳이 없으면 총알 없는 총. 그냥 붕 떠있을 따름ㅋ
ptr = &data가 필요하다.
*의 사용 햇갈리지 않기.
int *ptr은 포인터 변수 선언하는거고, *ptr = data는 *ptr이 가르키는 위치의 값을 data의 값으로 바꾸라느 명령어.
1)int *ptr >>포인터 선언
2)ptr = &data >>포인터에 명확한 주소 할당.
3)*ptr = *ptr + 10 >>포인터를 일반변수처럼 사용.
4)(*ptr)++; >> 포인터를 사용하여 포인터에 증가연산자를 사용.
(*ptr)을 하나의 변수처럼 간주하여, 그 변수의 값을 하나 증가하게 한다는 것.
5)*ptr++; >>괄호를 사용하지 않고 포인터에 증가 연산자 사용.
*(ptr++)는 포인터의 현재 주소르 하난 증가하고, 증가된 그 주소가 가르키는 값을 나타냄. 아무조건 없이 움직였으니 쓰래기값이 나온다,
'About 프로그래밍!!! > C언어 무따기 정리' 카테고리의 다른 글
[무따기 C언어]함수의 파라미터로 구조체 사용하기. (0) | 2010.06.26 |
---|---|
[무따기 C언어]구조체 (0) | 2010.06.26 |
[무따기C언어] 4과 변수와 자료형. (0) | 2010.05.25 |
[무따기C언어] 5과 연산자 (0) | 2010.05.25 |
[무따기C언어] 3과(프로그램의 구성요소와 프로그래밍 규칙 (0) | 2010.05.12 |