본문 바로가기

C, C++

(11)
C/ C++/ 상수/const 상수(const)란? 프로그램에서 변하지 않는 숫자나 문자를 의미한다. 만약 프로그램에서 특정 상수가 여러 번 사용된다면, 그 상수를 변수에 저장해서 사용하는 것이 편리하다. 이 때, 상수를 저장해둔 변수의 내용이 수정된다면 프로그램이 정상적으로 처리되지 않을 가능성이 매우 높아지게 된다. 때문에 이러한 상황을 막기 위해 const 를 이용하여 저장해둔 변수의 내용을 수정할 수 없도록 한다. 수정하려고 하면 에러가 발생되도록 한다. const는 다른 일반 변수와 구별하기 위해 일반적으로 모두 대문자로 만들어 사용한다. C++ 에서 상수를 정의하는 방법은 다음과 같다. "const 자료형 상수이름 = 값;" 상수는 반드시 선언과 동시에 초기화시켜야 한다. 비쥬얼 스튜디오 2017부터는 멤버 변수를 선언할 ..
C++/구조체 구조체 프로그래밍을 할 때 실제로 처리할 수많은 데이터들은 단일 자료형으로 구성되기보다는, 여러 자료형이 뒤섞여 있는게 다반사이다. 예를 들어, 한 학생의 성적처리를 한다고 하면, 이름(char), 학번(int), 국어점수(int), 영어점수(int), 총점(int), 평균(double) 등 최소 3가지의 자료형이 필요하다. 구조체란 이러한 경우의 편의성을 위해 여러 자료형을 묶어서 프로그램에 사용할 새로운 자료형을 만들 수 있게 해준다. 그리고 이 구조체에 저장된 데이터를 처리할 수 있는 함수 기능이 추가된다면 클래스가 되는 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35..
C++/template/함수 템플릿/템플릿에 관하여 * 공부 목적의 블로그로, 틀린 부분이 있을 수 있으며 계속해서 내용을 수정하고 추가합니다. - 템플릿(Template)이란? 템플릿이란 서로 자료형이 다르지만 기능은 같은 여러 함수를 담고자 할 때 사용하는 것이다. template 와 같이 선언하며, T는 여러 자료형을 담기 위한 임의적인 자료형이다. 일반적으로 T 라고 쓴다. 템플릿을 사용하지 않을 경우, 자료형이 다르면 같은 기능을 자료형에 따라 따로 코딩해야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // 두 개의 인수를 받아서 더 작은 수를 출력하는 함수 int mini(int a, int b) { if (a > b) { return b; } else { return a; } } doubl..
C++/call by value, call by reference call by value (값에 의한 호출) 호출되는 함수의 가인수로 실인수의 값을 복사해서 넘겨준다. 실인수와 가인수는 독립된 메모리 공간을 사용한다. 가인수에 저장된 데이터가 변경되도 실인수에 저장된 데이터는 변경되지 않는다. 부작용(side effect) 현상이 발생되지 않는다. 함수를 호출할 때 여러개의 데이터를 넘겨줄 수 있지만 결과는 return 에 의해서 1개만 받을 수 있다. 데이터를 던지면 일반 변수로 받는다. call by reference (참조(주소)에 의한 호출) 호출되는 함수의 가인수로 실인수가 메모리에 생성된 주소를 넘겨준다. => 실인수와 가인수는 같은 주소를 참조한다. 같은 메모리 공간을 사용한다. => 메모리를 공유해서 사용한다. 실인수와 가인수가 같은 메모리 공간을 사용..
C++/달력 만들기 헤더 파일/ 년도, 월, 일을 넘겨받아서 요일을 출력하는 함수를 만들어보자. 헤더파일에 만들어서 소스 파일에 #include 시켜서 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 // 년도를 넘겨받아 윤년/평년을 판단해 윤년이면 true(1), 평년이면 false(0)을 리턴하는 함수 bool isLeapYear(int year) { return year % 4 == 0 and year % 100 != 0 or year % 400 == 0; } // 년, 월을 넘겨받아 그 달의 마지막 날짜를 리턴하는 함수 int lastDay(int year, int month) { // 각 달의 마지막 날짜를 기억하..
C++/왕복버블정렬 알고리즘 풀이. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include "config.h" void main() { int d[] = { 21, 1, 19, 10, 5, 39, 4, 74, 64, 99 }; // 예시로 든 숫자 int n = 10; int left = 0, right = 9, shift, i; // left => 왼쪽에서 오른쪽으로 비교할 때 정렬하기 위한 비교를 실행하는 시작 위치 // right => 오른쪽에서 왼쪽으로 비교할 때 정렬하기 위한 비교를 실행하는 시작 위치 // shift => 마지막..
C++/소인수분해 알고리즘 문제/ 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 #include "config.h" // 소인수분해 문제 void main() { // 소인수를 기억할 배열을 선언하고 모든 배열 요소를 0으로 초기화시킨다. int s[20] = { 0, }; // 2보다 작은 숫자가 입력될 때까지 while 문을 반복하며 소인수 분해한다. while (true) { // 소인수..
C++/점수별 등급 주기/if/switch 점수별로 A, B, C, D, F 로 등급을 주자. if 문과 switch 문 두 가지 방법을 사용해 보고자 한다. if 사용해서. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include "config.h" void main() { int cpp, java, jsp; // printf("세 과목의 점수를 입력하세요 : "); // scanf_s("%d %d %d", &cpp, &java, &jsp); // 혹은 cout cpp >> java >> jsp; int total = cpp + java + jsp; //double aver..