Scientia Conditorium

[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 6주차 본문

서평/IT-강의

[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 6주차

크썸 2022. 2. 27. 22:09

[기본 미션] - 포인터의 핵심 내용을 정리하고 공유하기

포인터(Pointer)

: 주소를 저장하기 위한 변수형

→ 변수인데 속에 담긴 내용은 메모리 주소

즉, 메모리 주소를 저장하는 변수

 

포인터는 어떤 변수에 저장된 값에 직접적으로 접근하는 것이 아니라

주소를 이용해서 간적접으로 접근하는 방식이다.

포인터의 핵심이라고 하면 메모리 주소와 변수이다.

 

포인터의 용도 설명
1. 큰 데이터를 매개변수로 사용할 때 const 배열에 오소가 10만개 있다고 하면, 매개변수 복사하느라 메모리와 시간 낭비.
포인터로 첫 번째 요소의 주소만 전달하면 모든게 해결
2. 반환 값이 둘 이상일 때 min, max 코드 참조
포인터로 함수 안에서 원본을 직접 변경하는 반환이랑 마찬가지
3. 동적 메모리 할당 함수의 범위에 상관없이 한동안 사용하고자 하는 데이터가 있는데,
→ 그 데이터의 크기를 컴파일 도중에 알 수 없거나
→ 프로그램 실행 수명 보다는 짧은 시간 동안만 사용하려고 할 때
- 동적으로 할당된 메모리 역시 연속된 메모리 덩어리이므로 배열과 비슷한 이유로 포인터가 적합
4. 데이터 구조를 구현할 때  
5. 임베비드 프로그래밍 등에서 하드웨어에 있는 메모리에 직접 접근해야 할 때  

 

[선택 미션] - 나만의 언어로 포인터 정리하기

포인터를 아파트 주소에 빗대어 설명하기도 하고 우편 주소도 나오고 별의 별 내용을 들어봤다.

다 필요없고 핵심은 메모리 주소, 그리고 포인터는 변수라는 것이 핵심이다.

변수니깐 당연히 값이 바뀔 수 있다는 뜻이다.

 

물론 처음 배우는 입장에서는 포인터가 뭔지도 모르겠고 왜 쓰는지도 모르겠고

이런 어려운걸 왜 알아야하는지도 모를 것이다.

나 역시 그랬다.

포인터 때문에 C/C++ 언어를 포기하는 사람도 많고 포인터 없는 자바가 짱이라는 사람도 있다.

그러나 이 말은 엄청 무식한 발언이니 안했으면 한다.

C#과 자바에서는 모든 것이 포인터로 동작하기 때문이다.

이 언어들이 내부적으로 포인터를 사용한 것이고 다만 포인터를 이용한 주소 이동 같은 걸 허용하지 않는 것 뿐이다.

 

포인터를 반드시 알아야 하냐는 질문에는 네니요라고 대답할 수 있다.

요즘은 어떤 프로그램을 만들 때 포인터를 이용하지 않더라도 충분히 좋은 제품을 만들 수 있다.

그러나 성능을 중요시 여기고, 컴퓨터 구조를 이해하면서 더 나은 프로그래머가 되고자 한다면

반드시 알아야 되는 것이 포인터이다.

 

 

 

주차 Chapter 기본 미션 선택 미션 추가 학습
1주차 Chapter 01 ~ 02 비주얼 스튜디오
설치 화면 인증샷
학습 스케줄 직접 짜고 공유하기 OpenGL 기본 셋팅
2주차 Chapter 03 ~ 04 확인 문제 풀고,
풀이 과정 설명하기
Ch.04 도전 실전 문제 풀고 인증샷 Shader 셋팅
3주차 Chapter 05 ~ 06 혼공 용어 노트에
용어 추가 등 노트
활용하고 공유하기
p.123 크리스마스 소개팅 예문 if 문 손코딩 인증샷 또는 실행 화면 캡쳐하기 Texture 입히기
4주차 Chapter 07 함수의 유형을
정리하여 공유하기
p.198 7-5 직접 해보는 손코딩 예제 테스트 후 apple 출력하고 종료한 화면 캡쳐하기. 왜 무한대로 출력되지 않는지
이유에 대해 생각하고 정리해보기
Transformation 적용
5주차 Chapter 08 직접 정리한
키워드 공유하기
널 문자의 정의,
용도와 표기법 공유하기
Coordinate System 적용
6주차 Chapter 09 포인터의 핵심 내용을
정리하고 공유하기
나만의 언어로 포인터 정리하기 Camera 적용