오늘의 할일
1. 세션 정리
2. 과제
3. 궁금증 해결
4. 다음 학습 예습
개념 요약
컴파일 단축키 : CTRL + F7
<< endl;은 줄바꿈
cout : 이 콘솔에 무언가 출력할 수 있게 해주는 명령어
복사는 비용이 존재 : 문자형(char)는 1바이트, 정수형(int)은 4바이트, 부동 소수점(double)은 8바이트/ 변수의 크기가 커지면 많은 복사 비용이 필요
-> 포인터는 변수이기 때문에 포인터 ptr은 지우개로 지우고 다른 주소를 새로 적을 수 있지만 배열 이름은 상수(Constant)이므로 배열 이름 arr은 건물의 '고정된 위치'. 건물을 통째로 들어서 다른 곳으로 옮길 수 없는 것처럼 다른 주소를 덮어씌우거나 변경할 수 없음
-> 포인터는 변수의 크기가 다 같지만 배열은 변수의 크기가 다름
컴파일 단축키 : CTRL + F7
<< endl;은 줄바꿈이라고 생각하면 됨(엔터)
cout : 이 콘솔에 무언가 출력할 수 있게 해주는 명령어
변수의 선언

변수의 연산

변수의 입력

대입과 비교

전위 증가 연산과 후위 증가 연산

일반 변수와 unsigned가 붙은 변수의 차이

<계산기 프로세스>
main함수 작성 -> 입력 받은 숫자를 저장 할 2개의 변수를 선언 -> 변수에 2개의 값 입력(cout, cin) -> 최종값 출력

변수는 타입과 이름을 가짐
변수의 타입에 따라 차지하는 메모리의 크기가 다름


배열 -> 같은 타입의 여러 데이터를 하나의 묶음으로 관리
임의 접근 : [ ] 연산자를 통해 한번에 특정 원소에 접근하는 것
배열의 선언

배열의 복사 및 대입

배열의 임의 접근

배열의 입출력

<학생 10명의 성적을 관리하는 프로그램>
main함수 작성 -> 학생 5명의 점수를 입력할 수 있는 공간 선언 -> 학생들의 점수를 입력 -> 학생들의 총점 및 평균 계산 -> 결괏값 출력

함수 : 작업을 정의하고 이름을 붙이는 문법
-> 가독성 및 재사용성이 향상
구성요소
함수에서 값을 전달하는 방식
기본적인 함수 정의와 호출

반환값이 없는 함수 (void 사용)

함수 호출시 값의 변화 확인 (일반 변수)

함수 호출시 값의 변화 확인 (주소 전달-변수)

함수 호출시 값의 변화 확인 (주소 전달-배열)

함수 호출시 값의 변화 확인 (참조자 사용)

원의 넓이 계산

평균 계산

이름 형식 변환

점수 출력

단순 if문 (투표 나이 구분하기)

if / else (짝수 홀수 구분하기)

if / else if / else문 (성적 등급 나누기)

날씨와 온도에 따른 외출 여부

계산기에 조건문을 활용해서 기능 추가

복합 조건(&&, ||)
&& -> 모든 조건이 참이어야 참 (직렬)
|| -> 둘 중 하나만 참이어도 참 (병렬)
복합 조건을 이용해 성적 등급 나누기

복합 조건을 이용해 날씨와 온도에 따른 외출 여부

for 문
1부터 10까지 합 계산

5부터 1까지 출력

1부터 20까지 3의 배수 출력

오른쪽 정렬된 삼각별 출력

while문
사용자 입력 종료

게임 루프

다이아몬드 모양 별 찍기

복사 이후에 두 변수는 서로 독립적인 공간을 가지므로, 한 쪽 값을 변경해도
다른 쪽에는 영향이 없음 (복사는 비용이 존재 : 문자형(char)는 1바이트, 정수형(int)은 4바이트, 부동 소수점(double)은 8바이트/ 변수의 크기가 커지면 많은 복사 비용이 필요)
하지만 포인터는 다름 (값 전체를 복사하는 게 아니라, 변수의 시작 주소를 알려주는 것 -> 복사 비용 없이 값 복사)
변수의 주소값 저장

포인터를 이용한 배열 접근

포인터 변수의 구성 요소
포인터 변수의 타입과 크기

포인터를 이용한 주소 확인

포인터연산과 데이터 크기

포인터 변수의 역참조
-> 포인터를 활용하려면 해당 주소에 있는 실제 값을 읽고 수정할 수 있어야 함
--> 역참조 연산자(*)을 사용
잘못된 포인터 접근


배열 이름의 의미 : 배열과 포인터의 차이
인덱스를 통한 임의 접근이 가능한 이유 : 배열은 메모리가 연속적으로 할
당되기 때문
배열과 포인터의 차이
배열 (int arr[4];): 메모리상에 방 4개가 다닥다닥 붙어있는 '건물' 그 자체. (실제 데이터 덩어리)
포인터 (int* ptr;): 그 건물의 주소를 적어놓는 '메모지(변수)'. (주소만 담는 공간)
-> 포인터는 변수이기 때문에 포인터 ptr은 지우개로 지우고 다른 주소를 새로 적을 수 있지만 배열 이름은 상수(Constant)이므로 배열 이름 arr은 건물의 '고정된 위치'. 건물을 통째로 들어서 다른 곳으로 옮길 수 없는 것처럼 다른 주소를 덮어씌우거나 변경할 수 없음
-> 포인터는 변수의 크기가 다 같지만 배열은 변수의 크기가 다름
배열의 기본 개념과 인덱스를 통한 접근

포인터를 이용한 배열 접근

배열 이름을 변경할 수 없는 이유

포인터 배열 : 포인터를 원소로 갖는 배열(int ptrArr[4]; 는 크기가 4이고, 각 원소가 int 인 배열)
배열 포인터 : 배열 전체를 가리키는 포인터(단일 변수가 아닌 배열 통째를 가리키는 변수)
포인터 배열

배열 포인터
