모두의 코드
모두의 코드

총 42 개의 강의로 준비된 씹어먹는 C 언어 강좌를 통해 C 언어의 처음부터 끝까지 배우실 수 있습니다! 특히 악명 높은 C 언어의 포인터나, 어려운 개념들을 충실히 짚고 넘어갑니다.

이 강좌는 2010년에 완결되었지만, 지속적으로 개선 및 보완하고 있습니다.

C 언어 문법을 아시는 분들이라면, 씹어먹는 C++ 강좌를 통해 C++ 기초 부터 최근의 C++ 17 까지 모든 내용을 배우실 수 있습니다. C 언어와 C++ 의 기본적인 문법이 비슷하기 때문에, C 언어를 어느 정도 아는 독자를 가정하여 쓰여져 있습니다.

이 강좌는 2020년에 완결되었고 총 50 개의 강좌가 준비되어 있습니다.

사이트 내에서 검색 하기
C 언어 레퍼런스
표준 입출력 라이브러리 stdio.h
문자열 관련 라이브러리 string.h
시간 관련 라이브러리 time.h
C ++ 레퍼런스
문자열 라이브러리 string
알고리즘 라이브러리 algorithm
최근 댓글
생각해보기 문제 2 만들어봤습니다. // DimVector.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include <iostream> #include <stdlib.h> #include <crtdbg.h> template <typename T> class DimVector { public: DimVector(int n = 2) { if (!is_constructor_entered) { is_constructor_entered = true; std::cout << "[생성자] 진입 "<< typeid(this).name() << std::endl; } arr = new T[n]; if (!is_constructor_executed) { is_constructor_executed = true; std::cout << " \t\t\t\t[생성자] 종료 " <<typeid(this).name() << std::endl; } } T& operator[](int n) { return arr[n]; } ~DimVector() { if (!is_destructor_entered) { is_destructor_entered = true; std::cout << " [소멸자] 진입 " << typeid(this).name() << std::endl; } delete[] arr; if (!is_destructor_executed) { is_destructor_executed = true; std::cout << " \t\t\t\t[소멸자] 종료 " <<typeid(this).name() << std::endl; } } private : T* arr; static bool is_constructor_executed; static bool is_destructor_executed; static bool is_constructor_entered; static bool is_destructor_entered; }; template <typename T> bool DimVector<T>::is_constructor_executed = false; template <typename T> bool DimVector<T>::is_destructor_executed = false; template <typename T> bool DimVector<T>::is_constructor_entered = false; template <typename T> bool DimVector<T>::is_destructor_entered = false; int main() { _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //DimVector<int> dim_vec(4); //dim_vec[0] = 1; //dim_vec[1] = 2; //dim_vec[2] = 3; //dim_vec[3] = 4; //DimVector<DimVector<int>> dim_vec_2(4); // //dim_vec_2[0][0] = 1; //dim_vec_2[0][1] = 2; //dim_vec_2[1][0] = 3; //dim_vec_2[1][1] = 4; //dim_vec_2[2][0] = 5; //dim_vec_2[2][1] = 6; //dim_vec_2[3][0] = 7; //dim_vec_2[3][1] = 8; DimVector<DimVector<DimVector<int>>> dim_vec_3; int a = 0; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { for (int k = 0; k < 2; ++k) { dim_vec_3[i][j][k] = ++a; } } } return 0; } 맞나 모르겠네요.
탁동왕 05.29
#include <iostream> class Date { int year_; int month_; int day_; int last_day[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; public: void SetDate(int year, int month, int date) { year_ = year; if (month >= 1 && month <= 12) month_ = month; else { while (month < 1 || month > 12) { std::cout << "월을 다시 입력해주세요 : " << std::endl; std::cin >> month; } month_ = month; } if (date >= 1 && date <= last_day[month_ - 1]) day_ = date; else { while (date < 1 || date > last_day[month_ - 1]) { std::cout << "일을 다시 입력해주세요 : " << std::endl; std::cin >> date; } day_ = date; } } void AddDay(int inc) { day_ += inc; if (day_ < 1) { while (day_ < 1) { day_ += last_day[month_ - 2]; this->AddMonth(-1); } } else if (day_ > last_day[month_ - 1]) { while (day_ > last_day[month_ - 1]) { day_ -= last_day[month_ - 1]; this->AddMonth(1); } } } void AddMonth(int inc) { month_ += inc; if (month_ > 12) { this->AddYear(month_ / 12); month_ %= 12; month_ += 1; } else if (month_ < 1) { this->AddYear(month_ / 12); month_ = (-month_) % 12 + 1; } } void AddYear(int inc) { year_ += inc; } void ShowDate() { std::cout << year_ << " 년 " << month_ << " 월 " << day_ << " 일 " << std::endl; } }; int main() { Date date; date.SetDate(2024, 5, 31); date.ShowDate(); date.AddDay(32); date.ShowDate(); date.AddDay(-5); date.ShowDate(); date.AddMonth(5); date.ShowDate(); date.AddMonth(13); date.ShowDate(); date.AddMonth(-2); date.ShowDate(); date.AddYear(23); date.ShowDate(); return 0; } // 수정할 부분이 있는데 일단 올려놓습니다.
purple 05.26