TIL(17)

이채원·2026년 7월 6일

TIL

목록 보기
17/77

오늘의 할일
1. 세션 정리
2. 과제
3. 궁금증 해결
4. 다음 학습 예습

개념 요약

컴파일 단축키 : CTRL + F7
<< endl;은 줄바꿈
cout : 이 콘솔에 무언가 출력할 수 있게 해주는 명령어
복사는 비용이 존재 : 문자형(char)는 1바이트, 정수형(int)은 4바이트, 부동 소수점(double)은 8바이트/ 변수의 크기가 커지면 많은 복사 비용이 필요

-> 포인터는 변수이기 때문에 포인터 ptr은 지우개로 지우고 다른 주소를 새로 적을 수 있지만 배열 이름은 상수(Constant)이므로 배열 이름 arr은 건물의 '고정된 위치'. 건물을 통째로 들어서 다른 곳으로 옮길 수 없는 것처럼 다른 주소를 덮어씌우거나 변경할 수 없음
-> 포인터는 변수의 크기가 다 같지만 배열은 변수의 크기가 다름


게임 개발자를 위한 C++ 문법 : 1회차 정리

## 변수

컴파일 단축키 : CTRL + F7
<< endl;은 줄바꿈이라고 생각하면 됨(엔터)
cout : 이 콘솔에 무언가 출력할 수 있게 해주는 명령어

변수의 선언

변수의 연산

변수의 입력

대입과 비교

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

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

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

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

## 배열

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

  • 배열은 임의 접근이 가능
  • 선언과 동시에 초기화 및 선언 후 추후에 초기화가 모두 가능
  • 통째로 복사 및 대입 불가능
  • 각 원소를 cin 과 cout 을 통해 입출력이 가능

배열의 선언

배열의 복사 및 대입

배열의 임의 접근

배열의 입출력

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

## 함수

함수 : 작업을 정의하고 이름을 붙이는 문법
-> 가독성 및 재사용성이 향상

구성요소

  • 인자 : 함수에 사용되는 외부 값
  • 동작 : 어떤 작업을 수행할지 정의
  • 반환 : 함수를 수행한 후 최종적으로 외부에 전달할 값 (반환하지 않는 함수를 만들려면 반환 타입 - void)
  • 이름 : 함수를 호출할 때 필요

함수에서 값을 전달하는 방식

  • 값 자체를 전달하는 방식
  • 주소값을 전달하는 방식
  • 참조자를 전달하는 방식

기본적인 함수 정의와 호출

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

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

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

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

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

원의 넓이 계산

평균 계산

이름 형식 변환

점수 출력

## 조건문

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

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

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

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

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

  • 사칙 연산(+, -, *, /)
  • 나누기를 할 때 0으로 나누려고 하는 경우 에러 문자를 출력

복합 조건(&&, ||)
&& -> 모든 조건이 참이어야 참 (직렬)
|| -> 둘 중 하나만 참이어도 참 (병렬)

복합 조건을 이용해 성적 등급 나누기

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

## 반복문

for 문

1부터 10까지 합 계산

5부터 1까지 출력

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

오른쪽 정렬된 삼각별 출력

while문

사용자 입력 종료

게임 루프

다이아몬드 모양 별 찍기

## 포인터

복사 이후에 두 변수는 서로 독립적인 공간을 가지므로, 한 쪽 값을 변경해도
다른 쪽에는 영향이 없음 (복사는 비용이 존재 : 문자형(char)는 1바이트, 정수형(int)은 4바이트, 부동 소수점(double)은 8바이트/ 변수의 크기가 커지면 많은 복사 비용이 필요)

하지만 포인터는 다름 (값 전체를 복사하는 게 아니라, 변수의 시작 주소를 알려주는 것 -> 복사 비용 없이 값 복사)

  • 변수의 주소값 저장 가능
  • 담고 있는 주소값에 해당되는 메모리에 있는 값을 읽거나 수정 가능

변수의 주소값 저장

포인터를 이용한 배열 접근

포인터 변수의 구성 요소

  • 변수의 시작 주소
  • 변수의 타입 (변수의 크기를 알기 위해 필요)
    -> 선언 시 데이터 형 뒤에 를 붙여 포인터임을 표시 (int ptr)

포인터 변수의 타입과 크기

포인터를 이용한 주소 확인

  • 주소가 매번 달라지는 이유 : 식당(프로그램)에 갈 때마다 사장님(운영체제)이 빈자리에 랜덤으로 안내해 주는 거랑 같음. 내가 앉는 테이블 번호(메모리 주소)는 매번 달라지지만, 내가 주문한 음식(변수 값: 3, 'A')은 항상 네가 앉은 테이블로 정확히 배달되니까 코드 실행에는 아무 문제가 없음 -> 보안을 위해서

포인터연산과 데이터 크기

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

잘못된 포인터 접근

  • nullptr을 이용한 안전한 포인터 사용

배열 이름의 의미 : 배열과 포인터의 차이

인덱스를 통한 임의 접근이 가능한 이유 : 배열은 메모리가 연속적으로 할
당되기 때문

배열과 포인터의 차이

  • 배열 (int arr[4];): 메모리상에 방 4개가 다닥다닥 붙어있는 '건물' 그 자체. (실제 데이터 덩어리)

  • 포인터 (int* ptr;): 그 건물의 주소를 적어놓는 '메모지(변수)'. (주소만 담는 공간)

-> 포인터는 변수이기 때문에 포인터 ptr은 지우개로 지우고 다른 주소를 새로 적을 수 있지만 배열 이름은 상수(Constant)이므로 배열 이름 arr은 건물의 '고정된 위치'. 건물을 통째로 들어서 다른 곳으로 옮길 수 없는 것처럼 다른 주소를 덮어씌우거나 변경할 수 없음
-> 포인터는 변수의 크기가 다 같지만 배열은 변수의 크기가 다름

배열의 기본 개념과 인덱스를 통한 접근

포인터를 이용한 배열 접근

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

## 포인터 배열 Vs 배열 포인터

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

포인터 배열

배열 포인터


과제


궁금증 해결하기


예습

profile
초보 개발자

0개의 댓글