728x90 반응형 Computer Science/C 언어25 [C 17]Understanding Generic Programming / 제네릭 프로그래밍 이해 Understanding Generic Programming / 제네릭 프로그래밍 이해제네릭 프로그래밍이란?정의: 데이터 타입에 관계없이 동작하는 코드를 작성하는 기법.목적:코드 재사용성: 다양한 데이터 타입에 대해 동일한 코드를 사용.유연성: 타입에 구애받지 않고 동작.중복 제거: 동일한 기능을 여러 타입으로 구현할 필요 없음.C 언어에서 제네릭 프로그래밍C 언어는 템플릿(C++에서 제공)을 지원하지 않으므로, 매크로와 void * 포인터를 활용하여 제네릭 프로그래밍을 구현합니다.사용 사례데이터 구조(스택, 큐, 링크드 리스트 등)에서 다양한 데이터 타입 처리.정렬, 검색 알고리즘에서 데이터 타입 독립적 구현.13.2. Macros and Inline Functions / 매크로와 인라인 함수매크로를 .. 2024. 12. 15. [C #17] 구조체(Structs), 공용체(Unions), 열거형(Enums) [C #17] 구조체(Structs), 공용체(Unions), 열거형(Enums)구조체(struct): 서로 다른 데이터 타입을 하나로 묶음.공용체(union): 여러 데이터 타입이 메모리를 공유.열거형(enum): 상수 집합에 이름 부여.구조체는 값을 직접 전달하거나 포인터를 통해 참조로 전달 가능. 구조체 (Structs)구조체의 개념정의: 서로 다른 데이터 타입을 하나로 묶는 사용자 정의 데이터 타입.용도: 관련된 데이터를 그룹화하여 관리.구조체 정의와 선언struct Point { int x; int y;};사용struct Point p1;p1.x = 10;p1.y = 20;printf("Point: (%d, %d)\n", p1.x, p1.y);구조체 초기화struct Point p2 .. 2024. 12. 14. [C #16] 문자열 입력 기본 함수와 상황별 선택 코딩 테스트에서 C언어로 문자열 입력을 처리할 때는 제한된 시간과 메모리 내에서 효율적으로 입력받아야 합니다. 이를 위해 몇 가지 팁을 정리했습니다.1. 문자열 입력 기본 함수와 상황별 선택1) scanf (주로 사용)사용 조건: 공백 없이 단일 문자열 입력.사용 예:char str[100];scanf("%s", str);장점:간단하며 대부분의 테스트 케이스에 적합.주의:공백 기준으로 입력이 끊기므로 여러 단어 입력이 필요한 경우 적합하지 않음.2) fgets (공백 포함 입력)사용 조건: 공백을 포함한 한 줄 입력.사용 예:char str[100];fgets(str, sizeof(str), stdin);장점:공백 포함 문자열 입력 가능.주의:입력 끝에 줄바꿈 문자(\n)가 포함되므로 제거 필요:str[.. 2024. 12. 14. [C #15] 문자열 (Strings) 문자열 (Strings)문자열은 문자 배열이며 마지막에 **'\0'**으로 종료.C에서 문자열 처리는 **** 라이브러리의 다양한 함수를 통해 수행. 3. 문자열 처리 주요 함수:strlen: 문자열 길이 반환.strcpy, strncpy: 문자열 복사.strcat, strncat: 문자열 연결.strcmp, strncmp: 문자열 비교.strchr, strstr: 특정 문자 또는 문자열 검색.동적 메모리를 통해 문자열 크기를 유연하게 관리 가능.strlen문자열 길이 계산strcpy문자열 복사strcat문자열 연결strcmp문자열 비교strchr특정 문자 검색strstr특정 문자열 검색strtok문자열 분리memset메모리 초기화memcpy메모리 복사 13.1 문자열이란?문자열은 문자의 배열로, 마지막.. 2024. 12. 13. [C #14] 동적 메모리 할당 (Dynamic Memory Allocation) 동적 메모리 할당 (Dynamic Memory Allocation)1. 동적 메모리 할당이란?동적 메모리 할당은 프로그램 실행 중에 메모리를 동적으로 요청하고 해제하는 기능입니다.C 언어에서는 malloc, calloc, realloc, **free**를 사용하여 메모리를 관리합니다.장점:컴파일 타임이 아닌 런타임에 필요한 만큼 메모리를 할당 가능.프로그램의 유연성과 효율성 증가.단점:메모리 누수 가능성.프로그래머가 직접 메모리를 해제해야 함.2. 동적 메모리 할당 함수1) malloc (Memory Allocation)메모리를 초기화하지 않고 필요한 크기만큼 할당.반환값: 할당된 메모리의 시작 주소를 가리키는 포인터.사용법:void* malloc(size_t size);예제:#include #inclu.. 2024. 12. 12. [C언어 13] 포인터와 배열 (Pointers and Arrays) 포인터와 배열 (Pointers and Arrays)포인터와 배열:배열 이름은 첫 번째 요소의 주소를 가리키는 포인터.arr[i]는 *(arr + i)와 동일.다차원 배열과 포인터:arr[i][j]는 *(*(arr + i) + j)와 동일.동적 2차원 배열은 이중 포인터로 처리.포인터 배열과 배열 포인터:포인터 배열: 여러 포인터를 저장.배열 포인터: 배열 전체를 가리킴.12.1 포인터와 배열의 관계1) 배열은 포인터처럼 작동배열의 이름은 배열의 첫 번째 요소의 주소를 나타냅니다.arr은 &arr[0]과 동일한 의미를 가집니다.#include int main(void) { int arr[5] = {10, 20, 30, 40, 50}; printf("arr: %p\n", arr); .. 2024. 12. 11. 이전 1 2 3 4 5 다음 728x90 반응형