[자료구조] 포인터

_찬·2022년 9월 25일
0

자료구조

목록 보기
2/5
post-thumbnail

포인터


1. 포인터의 개념

  • 대상의 주소를 통해 대상을 가리키는 지시자
  • 주소를 나타내는 자료 또는 그러한 자료형
  • 포인터가 가리키는 데이터의 자료형 정보, 즉 참조 자료형 정보도 가지고 있다.

포인터 선언 방법

int* a; // a는 int(정수)형 포인터 변수이다.

2. 포인터 연산자

& : Address of - 참조 연산자, 대상의 주소를 얻어오는 연산자
예)

a = &b; // 변수 b의 주소를 포인터 변수 a에 저장
  • : 역참조 연산자, 주소로부터 대상 변수값을 얻어오는 연산자
    예)
int c = *a // 변수 C는 포인터 변수 a가 가리키는 주소	

3. 포인터 변수는 힙 영역에 접근하는 동적 변수이다


4. 메모리 영역

포인터 변수의 용도

  • 메모리에 직접 접근하기 위해 사용한다.
  • 연결된 자료 구조를 구성 및 동적 할당 자료구조 저장
    포인터를 매개 변수로 전달하면 호출된 함수에서 호출한 함수의 변수 내용을 변경할 수 있다.

포인터와 배열

1) 개념
배열을 포인터 변수에 저장한 후, 포인터를 이용하여 배열의 요소에 접근할 수 있다.

int a[5];
int* b;
b = a; // 배열 a의 시작 주소인 a[0]의 주소를 포인터 변수 b에 저장

배열의 이름 : 배열의 첫번째 요소의 주소

배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자를 사용

b = &a[2]; // 배열 a의 세 번째 요소인 a[2]의 주소를 포인터 변수 b에 저장한다.

포인터 변수에 대한 연산

  • 포인터 변수에 대해 정수 변수와 유사하게 +,-,++,-- 연산 가능
  • 정수 변수와 달리 실제 더해지거나 빼지는 값은 포인터 변수가 참조하는 자료형의 크기에 따라 달라짐

배열의 이름과 주소

  • 배열의 이름은 배열의 시작 주소를 나타내는 포인터/주소 상수
  • 배열이름은 상수이므로 값 변경 불가
  • 배열 이름은 포인터이므로 + 연산 가능

배열을 매개변수로 사용하려면

void f(int arr[] 또는 int *a)
profile
꾸준한 사람이 되길!

0개의 댓글