오늘의 목표
- C++ 문법 챕터 1-1 프로그래밍 기초(1) 강의 수강
- C++ 문법 챕터 1-2 프로그래밍 기초(2) 강의 수강
- C언어 배열, 함수, 포인터 복습
- 알고리즘 1일차 수업 복습
1. C++ 문법 챕터 1-1 프로그래밍 기초(1)
visual studio 인코딩 문제 해결

해결완!
대입과 비교
// 대입 연산자(=)와 비교 연산자(==) 차이 예제
#include <iostream>
using namespace std;
int main() {
int a = 5; // 변수 a에 5를 대입
int b = 5; // 변수 b에 5를 대입
// 대입 연산 (값을 변경)
a = 10; // a의 값을 10으로 변경
// 비교 연산 (참/거짓 결과 반환)
bool isEqual = (a == b); // a와 b가 같은지 비교
// 출력
cout << "a = " << a << ", b = " << b << endl;
cout << "a == b: " << isEqual << endl; // 비교 결과 출력
return 0;
}
/*
출력 예시:
a = 10, b = 5
a == b: 0
*/
<예상 출력값>
a = 10, b = 5
a == b: 0
<실제 출력값>

다른 점
없음!
전위 증가 연산과 후위 증가 연산
// 전위 증가 연산 (++a) vs 후위 증가 연산 (a++) 기본 예제
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = a++; // 후위 증가: b에 먼저 a를 대입한 후 a 증가
int c = ++a; // 전위 증가: a를 먼저 증가시킨 후 c에 대입
cout << "후위 증가 (b = a++):" << endl;
cout << "b = " << b << ", a = " << a << endl; // b = 5, a = 7
cout << "전위 증가 (c = ++a):" << endl;
cout << "c = " << c << ", a = " << a << endl; // c = 7, a = 7
return 0;
}
/*
출력 예시:
후위 증가 (b = a++):
b = 5, a = 6
전위 증가 (c = ++a):
c = 7, a = 7
*/
<예상 출력값>

후위 증가 (b = a++):
b = 5, a = 5
전위 증가 (c = ++a):
c = 7, a = 7
<실제 출력값>

일반 변수와 unsigned가 붙은 변수의 차이
// 일반 변수(signed int)와 unsigned int의 차이 예제
#include <iostream>
using namespace std;
int main() {
int signedVar = -10; // 일반 int (signed), 음수 가능
unsigned int unsignedVar = 10; // unsigned int, 음수 불가능
cout << "signed int: " << signedVar << endl;
cout << "unsigned int: " << unsignedVar << endl;
return 0;
}
/*
출력 예시:
signed int: -10
unsigned int: 10
*/

계산기 구현
#include <iostream>
using namespace std;
int main()
{
// 1. 입력 받은 숫자를 저장 할 2개의 변수를 선언
int firstNum = 0;
int secondNum = 0;
cout << "첫 번째 수 입력 : ";
cin >> firstNum;
cout << "두 번째 수 입력 : ";
cin >> secondNum;
//더한 결과값 출력
cout << "더한 결과는 : " << firstNum + secondNum << endl;
return 0;
}

2. C++ 문법 챕터 1-2. 프로그래밍 기초 (2)
배열의 선언
#include <iostream>
using namespace std;
// 배열 선언과 초기화 예제
int main() {
// 선언과 동시에 초기화
int arr1[3] = { 1, 2, 3 };
// 선언 후 개별 원소 초기화
int arr2[3];
arr2[0] = 10;
arr2[1] = 20;
arr2[2] = 30;
// 배열 출력
cout << "arr1: " << arr1[0] << ", " << arr1[1] << ", " << arr1[2] << endl;
cout << "arr2: " << arr2[0] << ", " << arr2[1] << ", " << arr2[2] << endl;
return 0;
}
/*
출력 예시:
arr1: 1, 2, 3
arr2: 10, 20, 30
*/

배열의 복사 및 대입
#include <iostream>
using namespace std;
// 배열의 복사 및 대입 불가능한 예제
int main() {
int arr1[3] = {1, 2, 3};
int arr2[3];
// 개별 원소를 복사하는 것은 가능
for (int i = 0; i < 3; i++) {
arr2[i] = arr1[i];
}
// 배열 통째로 대입 (불가능, 주석 처리)
// arr2 = arr1; // 컴파일 오류 발생
// 복사된 배열 출력
cout << "arr2: " << arr2[0] << ", " << arr2[1] << ", " << arr2[2] << endl;
return 0;
}
/*
출력 예시:
arr2: 1, 2, 3
*/

배열의 임의 접근
#include <iostream>
using namespace std;
// 배열을 선언하고 [] 연산자로 접근하는 예제
int main() {
int arr[4] = {10, 20, 30, 40};
// 배열 원소에 임의 접근하여 출력
cout << "첫 번째 원소: " << arr[0] << endl;
cout << "두 번째 원소: " << arr[1] << endl;
cout << "세 번째 원소: " << arr[2] << endl;
cout << "네 번째 원소: " << arr[3] << endl;
// 범위를 벗어난 접근 (에러 발생 가능)
// cout << arr[4] << endl; // 정의되지 않은 동작 (UB, 오류 가능)
return 0;
}
/*
출력 예시:
첫 번째 원소: 10
두 번째 원소: 20
세 번째 원소: 30
네 번째 원소: 40
*/

성적 관리 프로그램
<구상>
학생 5명의 정보를 받아 저장하는 int 배열 student를 사용해서 cin으로 입력받고 총점과 평균을 계산.
#include <iostream>
#include <string>
using namespace std;
int main() {
int student[5];
int tot = 0;
double avg = 0;
for (int i = 0; i < 5; ++i) {
cout << "점수를 입력해주세요: ";
cin >> student[i];
tot += student[i];
}
avg = tot / 5;
cout << "총점: " << tot << endl;
cout << "평균: " << avg << endl;
return 0;
}
직접 구현해 봤다.
강의에서 제공하는 예제 코드
#include <iostream>
using namespace std;
int main()
{
double score[5];
cout << "1 번째 학생 점수를 입력해주세요 : ";
cin >> score[0];
cout << "2 번째 학생 점수를 입력해주세요 : ";
cin >> score[1];
cout << "3 번째 학생 점수를 입력해주세요 : ";
cin >> score[2];
cout << "4 번째 학생 점수를 입력해주세요 : ";
cin >> score[3];
cout << "5 번째 학생 점수를 입력해주세요 : ";
cin >> score[4];
double tot = score[0] + score[1] + score[2] + score[3] + score[4];
double avg = tot / 5;
cout << "총점 : " << tot << endl;
cout << "평균 : " << avg << endl;
return 0;
}

기본적인 함수의 정의와 호출
// 목적: 두 개의 정수를 더하는 함수 정의 및 호출 예제
#include <iostream>
using namespace std;
// 두 정수를 더하는 함수
int add(int a, int b) {
return a + b; // 결과 반환
}
int main() {
int result = add(3, 7);
cout << "3 + 7 = " << result << endl; // 출력: 3 + 7 = 10
return 0;
}

반환값이 없는 함수
// 목적: 반환값 없이 특정 메시지를 출력하는 함수
#include <iostream>
using namespace std;
// 메시지를 출력하는 함수 (반환 없음)
void printMessage() {
cout << "Hello, Function!" << endl;
}
int main() {
printMessage(); // 함수 호출
return 0;
}
// 출력:
// Hello, Function!

잘못된 함수 정의
// 목적: 반환값이 없는데 반환하는 오류 발생 예제
#include <iostream>
using namespace std;
// 잘못된 함수 정의
void incorrectFunction() {
return 42; // 오류 발생: void 함수는 값을 반환할 수 없음
}
int main() {
incorrectFunction();
return 0;
}
/*
컴파일 오류:
error: return-statement with a value, in function returning 'void'
*/
<오류>

함수 호출 시 값의 변화 확인(일반 변수)
#include <iostream>
using namespace std;
// 함수: 값 전달 (Call by Value)
void modifyValue(int x) {
x = 100; // 함수 내부에서 값 변경
}
int main() {
int num = 50;
modifyValue(num); // 값 전달 (복사됨)
cout << "값 전달 후 num: " << num << endl;
// 출력: 값 전달 후 num: 50
return 0;
}

함수 호출시 값의 변화 확인 (주소 전달-변수)
#include <iostream>
using namespace std;
// 함수: 포인터를 사용한 값 변경
void modifyValue(int* ptr) {
*ptr = 100; // 포인터가 가리키는 변수의 값을 변경
}
int main() {
int num = 50;
modifyValue(&num); // num의 주소 전달
cout << "포인터 전달 후 num: " << num << endl;
// 출력: 포인터 전달 후 num: 100
return 0;
}

함수 호출시 값의 변화 확인 (주소 전달-변수)
#include <iostream>
using namespace std;
// 함수: 포인터를 사용한 값 변경
void modeifyArr(char* ptr) {
ptr[0] = 'X'; // 포인터가 가리키는 변수의 값을 변경
}
int main() {
char str[4] = {'A', 'B', 'C', 'D'};
modeifyArr(str); // num의 주소 전달
cout << "포인터 전달 후 str[0] = " << str[0] << endl;
// 출력: 포인터 전달 후 str[0] = X
return 0;
}

함수 호출 시 값의 변화 확인 (참조자 사용)
#include <iostream>
using namespace std;
// 함수: 참조를 사용한 값 변경
void modifyValueByReference(int& x) {
x = 200; // 참조를 사용하여 원본 값 변경
}
int main() {
int num = 50;
modifyValueByReference(num); // 참조 전달
cout << "참조 전달 후 num: " << num << endl;
// 출력: 참조 전달 후 num: 200
return 0;
}

<함수의 실제 사용 예시>
원의 넓이 계산
#include <iostream>
using namespace std;
/**
* @brief 반지름을 입력받아 원의 넓이를 계산하는 함수
* @param radius 원의 반지름
* @return double 원의 넓이
*/
double calculateCircleArea(double radius) {
return 3.14 * radius * radius;
}
int main() {
double radius = 5.0;
cout << "원의 넓이: " << calculateCircleArea(radius) << endl;
return 0;
}
main()의 radius와 calculateCircleArea(double radius)의 radius는 이름만 같을 뿐 저장 위치가 다른 별개의 변수들이다. 함수의 인자인 radius는 값을 복사하기 위해 새로 만든 매개변수이고, 함수가 종료되면 사라진다.

<평균 계산>
#include <iostream>
using namespace std;
/**
* @brief 4개의 점수를 입력받아 평균 점수를 계산하는 함수
* @param score1 첫 번째 점수
* @param score2 두 번째 점수
* @param score3 세 번째 점수
* @param score4 네 번째 점수
* @return int 평균 점수 (소수점 제외)
*/
int calculateAverage(int score1, int score2, int score3, int score4) {
int sum = score1 + score2 + score3 + score4;
return sum / 4; // 정수 나눗셈으로 소수점 없이 계산
}
int main() {
int score1 = 80, score2 = 90, score3 = 85, score4 = 70;
cout << "평균 점수: " << calculateAverage(score1, score2, score3, score4) << endl;
return 0;
}

이름 형식 변환
#include <iostream>
#include <string>
using namespace std;
/**
* @brief 이름과 성을 입력받아 "성 이름" 형식으로 변환하는 함수
* @param firstName 이름
* @param lastName 성
* @return string 변환된 이름
*/
string formatName(string firstName, string lastName) {
return lastName + " " + firstName; // 문자열 결합
}
int main() {
string firstName = "철수";
string lastName = "김";
cout << "이름 형식 변환: " << formatName(firstName, lastName) << endl;
return 0;
}
+ 로 string 결합시키기

점수 출력
#include <iostream>
using namespace std;
/**
* @brief 네 개의 점수를 받아 합계를 계산하고 출력하는 함수
* @param score1 첫 번째 점수
* @param score2 두 번째 점수
* @param score3 세 번째 점수
* @param score4 네 번째 점수
*/
void printTotalScore(int score1, int score2, int score3, int score4) {
int total = score1 + score2 + score3 + score4; // 점수 합계 계산
cout << "점수 합계: " << total << endl;
}
int main() {
printTotalScore(80, 90, 85, 70); // 합계 출력
return 0;
}

C/C++ 라이브 세션 강의 Day4
챕터 5-1: 1차원 배열
https://annadevelop.tistory.com/30
챕터 5-1 : 1차원 배열
수업 목표배열이 무엇인지에 대해 배워본다.배열의 응용에 대해서도 알아본다.배열의 필요성지금까지 배운 내용으로만 대선 개표 프로그램을 만든다고 가정해봅시다.어떤 사람이 어떤 후보를
annadevelop.tistory.com
챕터 5-2: 2차원 배열
https://annadevelop.tistory.com/31
오늘의 배운점: 배열을 초기화 할 때 array[10] = {0, }를 함으로서 안의 모든 인자를 0으로 초기화할 수 있다.
오늘의 아쉬운 점: 포인터를 중점으로 공부하고 싶었는데 거기까지 다다르지 못했다. 좀 더 정진할 것!
'Unreal5 공부 > TIL' 카테고리의 다른 글
| 2026/03/10 TIL (0) | 2026.03.10 |
|---|---|
| 2026/03/09 TIL (0) | 2026.03.09 |
| 2026/03/05 TIL (0) | 2026.03.05 |
| 2026/03/04 TIL (1) | 2026.03.04 |
| 2026/03/03 TIL (0) | 2026.03.03 |
