Language 62

06. 포인터

1. 포인터 개념 및 기본 문법포인터는 특정 타입의 변수가 저장된 메모리 주소를 가리키는 변수포인터를 선언할 때는 해당 포인터가 가리킬 데이터 타입을 함께 지정하며, 선언 시 * 기호를 사용int value = 10;int *p = &value;위 코드에서 value는 정수 변수이고, p는 value의 주소를 가리키는 포인터&value는 value 변수의 메모리 주소를 얻는 주소 연산자p에 value의 주소가 저장되면, *p (포인터 역참조)를 통해 p가 가리키는 주소의 실제 값에 접근할 수 있음예를 들어 printf("%d\n", *p);는 value의 값을 출력2. 포인터 연산포인터에는 주소값을 다루기 위한 몇 가지 연산이 가능포인터에 정수를 더하거나 빼는 연산을 하면, 가리키는 타입의 크기만큼 주소..

Language/C 2025.03.18

05. 배열과 문자열

1. 배열 개념 및 활용배열을 선언할 때는 타입과 크기를 지정int numbers[5];numbers라는 이름의 연속된 정수 5개 분량의 메모리가 할당 배열 요소는 0부터 시작하는 인덱스(index)로 접근하며, numbers[0]부터 numbers[4]까지 사용할 수 있음배열을 선언하면서 초기화int evens[3] = {2, 4, 6}; // 크기가 3인 배열을 선언하고 2, 4, 6으로 초기화또한 배열은 반복문과 함께 사용되어 여러 데이터를 처리하는 데 편리int sum = 0;for (int i = 0; i 위 코드에서는 evens 배열의 각 요소를 차례로 합하여 sum에 누적합2. 다차원 배열C에서는 배열을 여러 차원으로 선언할 수도 있습니다 (2차원, 3차원 등)2차원 배열은 흔히 행렬(ma..

Language/C 2025.03.18

04. 함수

1. 함수의 선언과 정의C에서 함수를 사용하려면 함수의 선언(declaration)과 함수의 정의(definition)가 필요함수 선언은 컴파일러에게 함수의 이름, 반환 타입, 매개변수 정보를 알려주는 프로토타입 역할을 하며, 함수 정의는 실제 함수의 구현(몸체)을 제공일반적으로 함수 정의 전에 선언(프로토타입)을 미리 작성하거나, 함수 정의 자체를 main 함수보다 앞에 놓음두 숫자의 합을 반환하는 함수 add를 선언하고 사용하는 방법#include // 함수 선언 (프로토타입)int add(int x, int y);int main() { int result = add(3, 4); printf("3 + 4 = %d\n", result); return 0;}// 함수 정의int add(i..

Language/C 2025.03.18

03 제어문과 반복문

1. 조건문 (if, switch-case)1) if 문은 주어진 조건식이 참(true)일 때 특정 코드 블록을 실행하고, 거짓(false)일 때는 다른 코드 블록(또는 아무 것도 하지 않음)을 실행if (조건식) { // 조건이 참일 때 실행할 코드} else { // 조건이 거짓일 때 실행할 코드}2) else-if를 사용하면 여러 조건을 순차적으로 검사할 수도 있음int num = -5;if (num > 0) { printf("양수입니다\n");} else if (num 3) switch-case 문은 하나의 변수 값에 따라 여러 분기(case) 중 하나를 실행할 때 사용case 라벨에 해당하는 코드를 실행하며, 일반적으로 break를 사용하여 해당 분기를 실행한 후 흐름을 빠져나감..

Language/C 2025.03.18

02. 기본 문법

1. 변수와 데이터 타입C에서는 데이터를 저장하기 위해 변수를 선언하며, 각 변수는 저장할 값의 종류에 따라 데이터 타입(data type)을 가져야 함기본 데이터 타입으로 정수형(int), 문자형(char), 실수형(float) 등이 있음int age = 25; // 정수형 변수 age를 선언하고 25로 초기화char grade = 'A'; // 문자형 변수 grade를 선언하고 'A'로 초기화double pi = 3.14; // 실수형 변수 pi를 선언하고 3.14로 초기화위의 예에서 int는 4바이트 정수를, char는 1바이트 문자를, double은 8바이트 실수를 저장변수 선언 시 초기값을 줄 수도 있고, 나중에 할당(= 연산자 사용)할 수도 있음변수를 사용하기 전에 반드..

Language/C 2025.03.16

01. C언어 소개

1. C언어 소개1) C언어의 역사와 특징C 언어는 1972년 벨 연구소(Bell Labs)에서 데니스 리치(Dennis Ritchie)가 개발한 프로그래밍 언어원래는 유닉스(UNIX) 운영체제를 만들기 위해 고안되었으며, 저수준(low-level) 언어인 어셈블리어의 단점을 보완하기 위해 설계되었음C 언어는 절차지향적 프로그래밍 언어로, 간결하고 효율적인 문법이 특징이식성(Portability)이 뛰어나 다양한 하드웨어와 운영체제에서 사용할 수 있으며, 다른 고급 언어들에 비해 컴파일된 실행 파일의 실행 속도가 매우 빠름C 언어는 메모리와 하드웨어 자원을 직접 제어할 수 있는 기능을 제공하기 때문에 시스템 프로그래밍(운영체제, 임베디드 시스템 등)에 적합포인터를 이용한 직접적인 메모리 접근, 비트 단위..

Language/C 2025.03.16

c# - 멀티스레드(3)

Task, async, await- 간편하게 멀티스레드를 구현하기 위한 기능- Task, Task비동기 작업을 나타내는 객체비동기 작업의 완료, 실행, 또는 함수 실행 결과를 반환하는 역할을 수행- async메소드 선언 앞에 async가 있다면 비동기로 실행이 가능한 메소드void, Task 또는 Task만 반환할 수 있으나, void 반환 시 호출하는 쪽에서 비동기 처리가 불가능await을 통해 호출되어야 비동기로 작동함- await 작업이 끝나기를 기다리지만 스레드를 멈추지는 않음Task 또는 Task 반환하는 메소드만 기다릴 수 있음async로 선언된 메소드에서만 사용 가능  - async로 선언되고 Task를 반환하는 메소드를 async로 선언된 다른 메소드에서 await로 호출해서 사용하는 것이..

Language/C# 2025.01.21

Sc# - 멀티스레드(2)

BackgroundWorker- DoworkBackgroundWorker가 UI 스레드와 별개로 수행할 메소드를 지정- progressChangedDoWork()로 지정된 메소드에서 ReportProgress() 메소드가 호출되면 반복적으로 실행되는 메소드를지정ReportProgress()는 0~100 사이의 값을 입력 받을 수 있음    ex) this.worker.ReportProgress(0);- RunWorkerCompletedDoWork() 메소드가 끝나면 1회 동작하는 메소드를 지정- RunWorkerAsync() BackgroundWorker를 실행시키는 메소드   ex) this.worker.RunWorkerAsync();- 프로그래스 바를 만들 때, while 문을 사용하여 바를 채우게 ..

Language/C# 2025.01.21

c# - 멀티 스레드(1)

Thread 란?- Process를 구성하는 작업 수행 주체- 단일 스레드 와 멀티 스레드 차이- 메모리에서 스레드 공유 유무멀티 스레드- 스레드는 함수 단위로 동작함- 하나의 프로세스(프로그램)에 여러 개의 스레드를 만들면 OS(ex.윈도우)가 스레드의 실행 순서를 정함의도적으로 스레드의 실행 순서를 제어할 수 없음- 스레드의 소스코드가 아직 전부 실행되지 않았는데, OS가 다른 스레드를 실행하여 갑자기 다른 코드가 작동되는 것을 Context Switching이라고 함- 멀티 스레드 방식은 단일 스레드 방식 대비 메모리 절약, 속도 개선과 같은 장점이 있음- 현재는 위도우, 맥, 안드로이드, iOS 등 대부분의 운영체제에서 동작하는 거의 모든 프로그램들은 멀티 스레드로 동작함- Context Swit..

Language/C# 2025.01.07

c# - 컬렉션

컬렉션이란?- 배열처럼 데이터 집합을 다루는 클래스- 제네릭을 제외한 컬렉션은 자료형에 상관 없이 데이터를 추가하는 것이 가능컬렉션 - Array- 배열을 제어하는 메소드 모음컬렉션 - Stack컬렉션 - Queue컬렉션 - Hashtable제네릭 컬렉션이란?- 보통의 컬렉션과 다르게 제네릭은 타입을 선택하여 해당 타입만 추가 가능- 기능적 제한이 있지만 안정성이나 속도면에서 제네릭이 유리함제네릭 컬렉션 - Stack, List제네릭 컬렉션 - Dictionary

Language/C# 2025.01.07