공부 52

2. 포인터와 레퍼런스

2.1 포인터변수의 주소포인터(pointer)변수의 주소를 나타냄 변수의 주소변수가 포함하고 있는 제일 첫 번째 바이트의 주소변수의 주소는 변수 이름 앞에 &를 붙여줌. ex) a의 주소는 &a 포인터 변수주소값을 저장하는 변수포인터라고 약칭 포인터 변수의 선언 및 사용간접 참조 연산자포인터 변수가 가리키는 실제 변수의 값을 참조#include using namespace std;int main(){ int n = 10, m; char c = 'A'; double d; int* p = &n; // p는 n의 주소값을 가짐 char* q = &c; // q는 c의 주소값을 가짐 double* r = &d; // r은 d의 주소값을 가짐 *p = 25; // n에 25가 저장됨 *q = 'A'; /..

공부/C++ 2024.03.30

1. C++ 프로그래밍의 기본

1.1 C++ 기본 요소와 화면 출력소스 파일의 확장자 cpp소스 파일의 확장자C 프로그램의 소스 파일: *.cC++ 프로그램의 소스 파일: *.cpp main 함수main() 함수C++  프로그램의 실행을 시작하는 함수main() 함수가 종료하면 C++ 프로그램 종료main() 함수의 c++ 표준 모양int main(){ // main의 리턴 타입 int // .... return 0; // 0이 아닌 다른 값으로 리턴 가능}// C 애서는 된다void main(){ // 표준 아님 // ...} main()에서 return문 생략 가능int main(){ // ... // return 0; // 개발자의 편리를 위해 return 문 생략 가능 // main의 retur..

공부/C++ 2024.03.26

0. C++ 시작

객체지향과 절차지향절차지향(Procedural) 프로그래밍절차지향 언어는 문제를 여러 개의 작은 함수(function)로 나누어 그 문제를 해결절차지향은 동사 중심의 프로그래밍 방식 : "어떤 처리 함수를 수행하는가?" 객체지향(Object Oriented) 프로그래밍관련된 변수(속성)와 함수(기능)를 묶어서 '객체(object)'를 만들고, 객체 단위로 프로그래밍C에서의 구조체 같은 것이다. C에어 구조체들은 변수들만 묶여있음세상 모든 것이 객체이다.객체지향은 명사 중심의 프로그래밍 방식 : "어떤 객체가 동작하는가?" 절차지향 프로그래밍과 객체지향 프로그래밍절차지향 프로그래밍실행하고자 하는 절차대로 일련의 명령어 나열흐름도를 설계하고 흐름도에 따라 프로그램 작성 객체지향 프로그래밍객체들을 정의하고, ..

공부/C++ 2024.03.24

이것이 C#이다 Chapter 22 가비지 컬렉션

22.1 가비지 컬렉터란?C/C++ 프로그래밍의 피로도 - 프로그래머 실수 측면객체 할당을 위해 메모리 공간을 확보하고, 할당한 후에는 포인터를 잘 유지하고 있다가 다 사용하면 해당 포인터가 가리키고 있는 메모리를 해제해줘야 한다.메모리를 제대로 해제했는데, 해제한 줄도 모르고 그 포인터에 접근해서 코드를 실행하는 경우도 있다.그 포인터가 가리키고 있던 메모리가 비어 있을 수도 있지만 다른 코드가 그 자리를 대신 차지하고 있을 수도 있기 때문에 어떤 일이 벌어질지 예측하기 힘들다. C/C++  프로그래밍의 피로도 - 객체 할당 측면C/C++ 기반의 프로그램을 실행하는 C-런타임은 객체를 담기 위한 메모리를 여러 개의 블록으로 나눈 뒤, 이 블록을 링크드 리스트로 묶어 관리한다.어떤 객체를 힙에 할당하는 ..

공부/C# 2024.03.17

이것이 C#이다 Chapter 18 파일 다루기

18.1 파일 정보와 디렉터리 정보 다루기파일(File)컴퓨터 저장 매체에 기록되는 데이터의 묶음디렉터리(Directory)파일이 위치하는 주소로, 파일(서류)를 담는다는 의미에서 폴더(Folder, 서류철)라고 부르기도 함 .NET은 파일과 디렉터리 정보를 손쉽게 다룰 수 있도록 System.IO 네임스페이스 아래에 다음과 같은 클래스 제공클래스설명File파일의 생성, 복사, 삭제, 이동, 조회를 처리하는 정적 메소드 제공FileInfoFile 클래스와 하는 일은 동일하지만 정적 메소드 대신 인스턴스 메소드 제공Directory디렉터리의 생성, 삭제, 이동, 조회를 처리하는 정적 메소드 제공DirectoryInfoDirectory 클래스와 하는 일은 동일하지만 정적 메소드 대신 인스턴스 메소드 제공Fi..

공부/C# 2024.03.17

이것이 C#이다 Chapter 17 dynamic 타입

1. dynamic 타입dynamic 타입도 데이터 타입이다. 타입 검사를 하는 시점이 프로그램 실행 중이다.class MyClass{ public void FuncAAA(){}}class MainApp{ static void Main(string[] args) { MyClass obj = new MyClass(); obj.FuncAAA(); obj.FuncBBB(); // 정의되어 있지 않으므로 컴파일 에러 }}MyClass 클래스에 FuncBBB() 메소드를 선언하지 않았기 때문에 컴파일되지 않는다. class MyClass{ public void FuncAAA(){}}class MainApp{ static void Main(str..

공부/C# 2024.03.17

이것이 C#이다 Chapter 16 리플렉션과 애트리뷰트

16.1 리플렉션런타임에 타입 정보를 다룰 수 있는 기능 -> 프로그래머에게 강력한 표편식을 제공객체의 타입(Type) 정보를 들여다 볼 수 있음프로그램 실행 중에 객체의 타입 이름부터 프로퍼티 목록, 메소드 목록, 필드, 이벤트 목록까지 모두 열어볼 수 있음타입의 이름만 있다면 동적으로 인스턴스를 만들 수 있고, 그 인스턴스의 메소드를 호출할 수도 있으며, 새로운 데이터 타입을 동적으로 만들 수도 있음.NET 팀은 모든 타입을 들여다볼 수 있는 방법을 마련했다. 바로 모든 데이터 타입의 조상인 Object 타입에 GetType() 메소드를 넣은 것이다.16.1.1 Object.GetType() 메소드와 Type 클래스Object는 모든 데이터 타입의 조상이다. 즉, 모든 데이터 타입은 Object 타입..

공부/C# 2024.03.17

이것이 C#이다 Chapter 15 LINQ

15.1 LINQLINQ(Language INtegrated Query)C#에 통합된 데이터 질의 기능기본적으로 Query는 다음 내용을 포함from: 어떤 데이터 집합에서 찾을 것인가?where: 어떤 값의 데이터를 찾을 것인가?select: 어떤 항목을 추출할 것인가?class Profile{ public string Name {get; set;} public int Height {get; set;}}Profile[] arrProfile = { new Profile(){Name="엄준식1", Height=170}, new Profile(){Name="엄준식2", Height=160}, ..

공부/C# 2024.03.16

이것이 C#이다 Chapter 14 람다식

14.1 람다식( Lambda Expression, λ-Expression)람다식은 알론조 처치(Alonzo Church)라는 수학자가 1936년에 발표한 람다 계산법(Lambda Calculus)에서 사용하는 식이다.알론조 처치는 수학 기초론을 연구하던 중에 분명하고 간결한 방법으로 함수를 묘사하기 위해 람다 계산법을 고안해냈다.람다 계산법은 크게 함수의 정의와 변수, 함수의 적용으로 이루어지는데 이 계산법에서는 모든 것이 함수로 이루어져 있다.0, 1, 2, ...와 같은 숫자도 함수로 표현한다. 따라서 람다 계산법에서 어떤 값을 변수에 대입하고 싶으면 함수를 변수에 대입하며, 이것을 함수의 적용이라고 부른다.람다 계산법은 단순히 수학 이론에 그치지 않았다. 알론조 처치의 제자였던 존 메카시(John..

공부/C# 2024.03.16