반응형
포인터의 이해
- 메모리의 주소 값을 가리키는 변수를 뜻합니다.
포인터의 선언
- 포인터 명 앞에 *를 붙입니다.
- 데이터형은 그 포인터 변수가 가리키고자 하는 지점의 데이터형에 맞게 선언합니다.
- 예시)
데이터형 * 포인터명;
char *chptr; // char 형을 가리키는 포인터 chptr 선언
int *iptr; // int 형을 가리키는 포인터 iptr 선언
float *fptr; // float 형을 가리키는 포인터 fptr
포인터 연산자
- 주소(&) 연산자: & 바로 다음에 변수가 오면 그 변수가 저장된 주소를 나타냅니다.
- &는 수식, 상수, 레지스터 변수에는 사용할 수 없습니다.
- 단순변수, 배열요소, 포인터 변수, 구조체 변수는 가능합니다.
- 값 연산자: 실행문일 경우 * 바로 다음에 포인터가 오면 그 포인터가 가리키는 주소에 저장된 값을 나타냅니다.
int data;
int *ptr; // ptr이 정수형 pointer 변수임을 의미
data = 3;
ptr = &data; // data의 주소
/**예시1 **/
ptr = &x; // 단순변수 x가 차지하는 실제 값의 주소를 ptr에 대입
y = *ptr; // 변수 y에 포인터 변수 ptr이 가리키는 곳의 값, 즉, 단순 변수 x의 값을 대입
/**예시2 **/
int num1, num2;
int *ptr; // 포인터 변수의 선언
num2 = 10;
ptr = &num2; // 단순변수 num2가 차지하는 실제 값의 주소를 ptr에 저장
num1 = *ptr; // 변수 num1에 포인터 변수 ptr이 가리키는 곳의 값을 대입
변수 선언과 포인터 변수 선언 시, 데이터 참조 (표)
선언 | 데이터 참조 | 주소 참조 |
int a; | a | &a |
int *ptr; | *ptr | ptr |
포인터 선언 예시)
int ja[10] ---> int 유형의 원소 10개로 이루어진 배열.
int *ja[10] ---> int 유형을 가리키는 포인터 10개로 이루어진 포인트 배열
int (*ip)[10] ---> int 유형의 원소 10개로 이루어진 1차원 배열을 가리키는 포인터
변수 ip
int f1() ---> int 유형의 값을 return 하는 함수.
int *f2() ---> int 유형을 가리키는 포인터를 return 하는 함수 f2.
포인터의 개념과 원리를 이해하는 것이 중요하며, 무엇보다도 예시를 따라서 실습을 한번 해보고 메모리 구조와 함께 그려나가시면 많은 도움이 될 것 같습니다.!
반응형
'프로그래밍 > C언어' 카테고리의 다른 글
[프로그래밍 C언어] C언어의 컴파일(Compile)에 대해... (0) | 2023.02.21 |
---|---|
[프로그래밍 C언어] C언어란 무엇인가? (0) | 2023.02.20 |
[프로그래밍] 인수/인자(Arguments)와 매개 변수(Parameter) 차이 (0) | 2023.02.19 |