C언어 포인터 개념 정리 / 용도 / 복습 또 복습하기
복습 또 복습합시다.
■ 포인터의 용도
1 큰 데이터를 매개변수로 전달할 수 있습니다.
배열 같은 경우 데이터를 하나하나씩 복사하려면 힘듭니다. const 배열에 요소가 10개정도 있으면 괜찮지만 요소가 한 10만개라면 일일히 복사하는 것은 정말 시간 낭비입니다. 그래서 배열을 매개변수로 전달하여 첫 번째 요소의 주소를 전달하므로 쉽게 데이터를 처리할 수 있게 됩니다.
2 반환 값이 둘 이상일 때 사용할 수 있습니다.
C언어에서는 반환값 2개를 return 할 수 없습니다. 따라서 반환해야할 값이 여러 개 있다면 매개변수로 포인터를 넣으면 됩니다. 그럼 함수 안에서 원본을 직접 변경할 수 있습니다. 이런 변수를 인앤아웃(in&out) 변수라고 합니다. 반환만 되는 값은 아웃(out)변수입니다.
3 동적 메모리 할당 시 활용합니다.
동적으로 할당된 메모리는 역시 연속된 메모리 덩어리라서 포인터로 접근하는 것이 좋습니다. (배열과 비슷한 이유)
함수의 범위에서 다음과 같은 경우일 때 사용할 수 있습니다.
- 그 데이터의 크기를 컴파일 도중에 알 수 없거나
- 프로그램 실행수명 보다는 짧은 시간 동안만 사용하려고 할 때
C언어 문법 총 정리에서 '메모리 이해하기' 글에서 동적 메모리 다룹니다.
4 그 외..
데이터 구조를 구현할 때: 연결리스트, 트리 등
임베디드 프로그램이 등에서 하드웨엉 있는 메모리에 직접 접근해야 할 때
: 어떤 하드웨어는 화면을 보여주려면 특정 메모리 위치에 이미지 데이터를 직접 복사해줘야 함
자료 참고: 포프 C 언매지드 프로그래밍 강의_No.136
꼭 짚고 넘어가야할
■ 포인터의 개념 총 정리
- 포인터: 주소를 담고 있는 변수
- 주소 연산자(&), 역 참조 연산자(*):
주소 연산자: 포인터는 주소는 담고 있는 변수라서 주소를 가지고 와야한다.
역 참조 연산자: 그 주소로 가서 값을 읽어올 때
- 널 연산자: 어떤 주소를 가리킨다는 거는 아무 것도 가리키고 싶을 않을 때가 있다. 보통 0인데 #define된 null 메크로를 쓰는 게 좋다
- 포인터 두 가지 const:
포인터는 언제나 오른쪽에 왼쪽으로 읽기 때문에,
주소를 변경하지 않으려면 포인터 앞에 const
값을 변경하지 않으려면 맨 앞에 const 훨씬중요
- 포인터 산술 연산
+, -
연산자 결합 법칙
- 포인터와 배열
개념은 같다. 통째로 메모리 잡혀있거나. 어째거나 그 메모리 주소를 알려주다는 점에서
매개변수로 받는 배열 들어올 수 밖에 없는 이유 이미 다룸
포인터와 배열이란?
- 포인터 배열
데이터형이 포인터였다
포인터 배열은 2차원 배열과도 비슷하지 않냐, 근데 다르다 그 이유는? 이미 다룸
자료 참고: 포프 C 언매지드 프로그래밍 강의_No.140
-----------------------------------
-----------------------------------
'컴퓨터 공학 > C, C++' 카테고리의 다른 글
[ C ] 문자열 함수 이해하기1_C 스타일 문자열이란? / 문자열 길이 구하기 (393) | 2020.07.21 |
---|---|
C언어 문법 총정리_프로그래밍 독학이나 컴퓨터공학과를 준비하는 분을 위한 (426) | 2020.07.21 |
[ C ] 포인터 이해하기10_다중, 이중 포인터란? / 다중 포인터 사용하는 이유 (399) | 2020.07.21 |
[ C ] 포인터 이해하기9_포인터 배열, 2차원 배열이란? 예제코드로 개념이해하기 (387) | 2020.07.20 |
[ C ] 포인터 이해하기8_함수 포인터 쉽게 읽는 방법 (1573) | 2020.07.20 |
댓글