※포인터의 개념
C에서 int형 변수 a를 선언후 10을 대입한 후의 메모리를 추상적으로 나타내면 다음과 같다.
int a=10;
이때 a를 담고 있는 메모리 주소를 가리키는 포인터는 &a 로 표현한다.
포인터 &a가 100번지에 있는 정수형 공간을, 또는 100번지에 저장된 정수를 가리킨다고 말한다.
- a의 포인터 → &a
- &: 포인터(주소) 연산자
- &a(a의 포인터)에 들어있는 정보
- 변수 a가 저장된 공간의 시작주소: 100
- 변수 a가 저장되는 방식: int(4byte 정수)
※포인터가 가리키는 공간/값 얻기
포인터가 가리키는 공간을 얻는 참조연산자: *
- 사용법: * 포인터
int a; → *(&a)
해당 공간을 변수처럼 사용할 수 있다.
-포인터가 가리키는 값 읽어서 변수에 저장하기
int a=10, b;
b = *(&a)
-포인터가 가리키는 공간에 값 저장하기
int a, b = 10;
*(&a) = b;
※포인터 저장
그럼 포인터는 어떤 자료형에 저장해야 하는가?
int a; int b = &a;
이렇게 하면 되나?
그럼 'int'의 간접 참조수준이 'int*'과(와) 다릅니다.
라는 에러를 만나게 될것이다.
포인터를 저장하기 위해서는 새로운 자료형 변수가 필요하다.
- 포인터 자료형의 선언
- 가리키는 자료형 * → int *, char*, double *, ...
- int * : 포인터 자료형(*)인데 가리키는 자료형이 int 형
int a = 10;
int *p = &a;
이 때 '*'는 포인터라는 의미이며 참조연산자의 의미가 아님. (*(&a)에 쓰였던 *와는 다름)
- 가리키는 변수를 접근하여 읽고 쓰기
'Programming Language > C언어' 카테고리의 다른 글
문자열 함수 (0) | 2016.04.15 |
---|---|
이차원배열을 매개변수로 넣어주기 (passing a 2d array as a function argument) (0) | 2016.04.08 |
char 배열에 담겨져 있는 string 비교 (char array comparison) (0) | 2016.02.22 |
visual studio 단축키 (0) | 2016.02.21 |
현재 디렉토리의 파일리스트/파일타입/파일정보(실행가능유무) 출력 (0) | 2016.02.11 |