본문 바로가기

ProgramingLagnuage14

[C언어] 포인터, 메모리 관리, 구조체 완벽 복습 포인터(pointer)가리키는(point) + 사람(er)이라는 개념이고, 또 하나의 변수라고 생각하면 된다.(변수를 가리키는 변수)ex) 이중 포인터 : 가리키는 사람을 가리키는 사람 n중 포인터 : 가리키는 사람을 가리키는 사람을 가리키는 사람을 가리키는 사람 ... 사람 포인터 사용 널 포인터- 아무것도 가리키지 않는 포인터int* ptr = NULL;int a = *ptr; // Error 배열과 포인터의 관계```cint arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}};```1. arr + 1의 경우 - 포인터 타입: int (*)[3] (3개의 int를 가진 배열을 가리키는 포인터) - 증가량: 12바이트 (4바이트 * 3) .. 2024. 11. 1.
[C++] 템플릿 프로그래밍(template programming) 템플릿 프로그래밍(template programming)= 제너릭 프로그래밍(generic programming) C: 절차지향 언어(Procedural language)JAVA : 객체지향언어(Object-Oriented language)  C++은 표준으로 템플릿을 라이브러리 형태로 제공한다. (STL) 근데 템플릿은 잘못 작성하면 미친듯한 오류를 생성해낸다. 그럼에도 쓰는 이유는- 타입 독립성(코드의 재사용성)- 코드 중복 감소- 컴파일 타임에 오류 발견 템플릿(Template)- 함수의 작성을 용이하게 하고, 재사용 가능하게끔 하여 SW 생산성과 유연성을 증가시킨다.-- 자료형이 변할 때마다 함수(클래스)를 새로 작성할 이유가 없다. - c에서 #define으로 정의되는 매크로와 유사하지만, 타입.. 2024. 10. 18.
[C++] 사용자 정의 유형 - Structure - 기본 struct 정의 : 여러 데이터를 하나로 묶어 새로운 데이터 타입 정의struct Vector { int sz; // 원소의 개수를 저장하는 정수형 변수 double∗ elem; // 원소들을 가리키는 포인터}; - 구조체 선언Vector v;이 상태에서는 v의 포인터 elem이 아무것도 가리키지 않기 때문에 의미가 없다.  - 동적 메모리 할당 void vector_init(Vector& v, int s){ v.elem = new double[s]; // s개의 double을 저장할 수 있는 배열을 할당 v.sz = s; // sz에 원소의 개수를 저장} new double[s]는 동적 메모리 할당을 통해 s개의 double 타입 원소를 저장할 수 있는 배열을 생성하고, 그 배열의 시작 주.. 2024. 9. 23.
[C++] C++ 소개 C++ 특징 절차적 프로그래밍(Procedural programming)- 적절한 데이터 구조 설계의 초점이 맞춰짐- C와 다르게 다른 언어에서도 C++를 통해 이 절차적 프로그래밍을 지원해줌데이터 추상화(Data abstraction)- 클래스를 통해 구체적이고, 추상적인 데이터들을 관리- 클래스 내부에 데이터와 그 데이터를 처리하는 함수(메서드)를 포함시켜 데이터의 구조와 동작을 캡슐화.- 인터페이스를 통해 사용자는 내부 구현 세부 사항에 의존하지 않고 클래스의 기능을 활용 가능객체 지향 프로그래밍(Object-oriented programming)- 클래스, 상속, 다형성, 캡슐화와 같은 OOP 개념을 통해 유지보수성과 재사용성을 높임.- 설계 단계에서 객체 간의 관계를 정의하고, 코드에서 이러한 .. 2024. 9. 22.
[C++] Class 주요 개념 1. 멤버 변수 (Member Variables)정의: 클래스의 인스턴스(객체)에 속하는 변수를 말합니다. 각 객체는 고유한 상태를 유지하기 위해 멤버 변수를 가집니다.class Person {public: std::string name; // 멤버 변수 int age; // 멤버 변수};2. 멤버 함수 (Member Functions)정의: 클래스의 멤버 변수에 접근하거나 조작하는 기능을 가진 함수입니다. 객체에 대한 동작을 정의합니다.class Person {public: std::string name; int age; void introduce() { // 멤버 함수 std::cout   코드 구조클래스 안에서 정의:멤버 함수의 선언과 정의.. 2024. 9. 22.
[c언어] - 테트리스 게임 설계 군대를 다녀오고 c언어를 가물가물해서 c언어를 복습할 겸 테트리스 게임을 만들고, 최적화 시켜보려고 프로젝트를 진행한다. main.c: 프로그램의 진입점이 되는 메인 함수가 있는 파일. tetris.c: 게임의 핵심 로직을 구현하는 파일. tetris.h: 필요한 함수와 변수들을 선언하는 헤더 파일. (추가 사항) graphics.h 및 graphics.c : 그래픽 관련 기능이 필요한 경우 사용 1. 테트리스 GUI 2. 블록 정의 (회전축을 어디로 잡아야 할까..?) 2-1. L {{0, 0, 0, 0}, {1, 0, 0, 0}, {1, 1, 1, 0}, {0, 0, 0, 0}} 1 111 1 1 11 111 1 11 1 1 2-2. J 1 111 11 1 1 111 1 1 1 11 2-3 T 1 1.. 2024. 8. 30.