본문 바로가기
컴퓨터 공학/C, C++

[ C ] 포인터 이해하기11_포인터 개념 정리 / 용도 / 복습 또 복습하기

by hahehohoo 2020. 7. 21.
반응형

C언어 포인터 개념 정리 / 용도 / 복습 또 복습하기

 

복습 또 복습합시다.

■ 포인터의 용도

 

1 큰 데이터를 매개변수로 전달할 수 있습니다.

배열 같은 경우 데이터를 하나하나씩 복사하려면 힘듭니다. const 배열에 요소가 10개정도 있으면 괜찮지만 요소가 한 10만개라면 일일히 복사하는 것은 정말 시간 낭비입니다. 그래서 배열을 매개변수로 전달하여 첫 번째 요소의 주소를 전달하므로 쉽게 데이터를 처리할 수 있게 됩니다.

 

2 반환 값이 둘 이상일 때 사용할 수 있습니다.

C언어에서는 반환값 2개를 return 할 수 없습니다. 따라서 반환해야할 값이 여러 개 있다면 매개변수로 포인터를 넣으면 됩니다. 그럼 함수 안에서 원본을 직접 변경할 수 있습니다. 이런 변수를 인앤아웃(in&out) 변수라고 합니다. 반환만 되는 값은 아웃(out)변수입니다. 

 

3 동적 메모리 할당 시 활용합니다. 

동적으로 할당된 메모리는 역시 연속된 메모리 덩어리라서 포인터로 접근하는 것이 좋습니다. (배열과 비슷한 이유)

함수의 범위에서 다음과 같은 경우일 때 사용할 수 있습니다.

- 그 데이터의 크기를 컴파일 도중에 알 수 없거나

- 프로그램 실행수명 보다는 짧은 시간 동안만 사용하려고 할 때

 

C언어 문법 총 정리에서 '메모리 이해하기' 글에서 동적 메모리 다룹니다. 

 

4 그 외..

데이터 구조를 구현할 때: 연결리스트, 트리 등

임베디드 프로그램이 등에서 하드웨엉 있는 메모리에 직접 접근해야 할 때

: 어떤 하드웨어는 화면을 보여주려면 특정 메모리 위치에 이미지 데이터를 직접 복사해줘야 함

 

자료 참고: 포프 C 언매지드 프로그래밍 강의_No.136

 

 

 


 

꼭 짚고 넘어가야할 

 

■ 포인터의 개념 총 정리 

 

- 포인터: 주소를 담고 있는 변수 

포인터 변수란?

 

- 주소 연산자(&), 역 참조 연산자(*):  

주소 연산자: 포인터는 주소는 담고 있는 변수라서 주소를 가지고 와야한다.

역 참조 연산자: 그 주소로 가서 값을 읽어올 때

역 참조란?

 

- 널 연산자: 어떤 주소를 가리킨다는 거는 아무 것도 가리키고 싶을 않을 때가 있다. 보통 0인데 #define된 null 메크로를 쓰는 게 좋다

 

- 포인터 두 가지 const:

포인터는 언제나 오른쪽에 왼쪽으로 읽기 때문에,

주소를 변경하지 않으려면 포인터 앞에 const

값을 변경하지 않으려면  맨 앞에 const 훨씬중요

const 키워드란?

 

- 포인터 산술 연산

+, -

연산자 결합 법칙 

 

- 포인터와 배열

개념은 같다. 통째로 메모리 잡혀있거나. 어째거나 그 메모리 주소를 알려주다는 점에서

매개변수로 받는 배열 들어올 수 밖에 없는 이유 이미 다룸

포인터와 배열이란?

 

- 포인터 배열 

데이터형이 포인터였다

포인터 배열은 2차원 배열과도 비슷하지 않냐, 근데 다르다 그 이유는? 이미 다룸

포인터 배열이란?

 

 

자료 참고: 포프 C 언매지드 프로그래밍 강의_No.140

 

 

 

 

-----------------------------------

C언어 문법 총정리

목록 보러가기 

-----------------------------------

 

 

 

 

반응형


댓글