songyc macbook df8adcd51f 그래프 3분할: English Study / Programming / Major Study 독립 그래프로 분리
- pages 119개·assets 140개+스냅샷 폴더 3개를 참조 추적 기반으로 분류 이동 (전부 git rename, 내용 무변경)
- 공용 페이지(template·card·contents) 3벌 복제, config.edn·custom.css 그래프별 복제
- 옛 Index Page는 _archive/ 보관, 루트 logseq/ 잔재 보존
- CLAUDE.md: 그래프·Anki 프로파일 구조 규칙 신설, 경로·검사 스크립트 갱신
- 복원 지점: 태그 before-graph-split

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G8rNxLqi5rYjRamC8uwiJW
2026-08-05 19:05:21 +09:00

77 lines
3.1 KiB
Markdown
Executable File

deck:: Logseq/coding tip
- ## **► C언어 변수타입 크기 정리**
- ![image.png](../assets/image_1749986661502_0.png) #card
id:: 690f2348-194d-46ec-bf5c-855c25c28cd5
- ![image.png](../assets/image_1749986614051_0.png)
-
-
- ## **► 라이브러리 함수 정리**
- ### ◼︎ qsort()
- 설명
- c언어 표준 라이브러리인 {{c1 stdlib.h}}에서 기본으로 제공하는 정렬함수로서 {{c1 퀵 정렬}}을 기반으로 동작한다.
id:: 6974a942-9c7a-4f48-85e0-7867a5355564
- 매개변수
- 함수 원형
id:: 6974a9ad-91a0-44f1-856e-4eb90df48f7d
```c
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
```
#card #depth-1
- base : 정렬한 배열의 시작주소(배열의 이름)
- nmemb : 배열의 요소 개수
- size : 배열 요소 하나의 크기(바이트 단위) (sizeof(type))
- compar : 정의된 비교 함수의 함수 포인터
- 비교 함수는 다음과 같은 형태여야 함
```c
int compare(const void *a, const void *b)
```
- 반환 값이 양수인 경우 :-> a가 b보다 우선순위가 낮다(즉 a와 b를 바꾼다.)
id:: 6974aad1-c74d-4a70-af13-c232ae9e2ecf
- 반환 값이 음수인 경우 :-> a가 b보다 우선순위가 높다(즉 a와 b를 바꾸지 않는다.)
id:: 6974ab86-8dac-413f-b490-f4ff0710ddf0
- 반환 값이 0인 경우 :-> 바꾸지 않는다(qsort는 불안정 정렬이기에 바꾸지 않는다고 해서 순서가 보장되진 않는다)
id:: 6974abaa-cef4-41c8-949f-a7dd46009e39
- 예시
- 정수형 배열 arr를 오름차순으로 정렬하기 위해서 compare_int 함수를 정의하고 main 함수에서 호출해서 정렬하라. #card
id:: 6974ac13-6e2d-4561-ba3e-8aef093f47e6
- ```c
#include <stdio.h>
#include <stdlib.h>
int compare_int(const void* a, const void* b) {
return *(int*)a - *(int*)b;
}
int main() {
int arr[10] = {5,2,7,8,3,4,0,9,1,6};
qsort(arr, 10, sizeof(int), compare_int);
for(int i=0; i<10; i++) printf("%d ", arr[i]);
// 0 1 2 3 4 5 6 7 8 9
return 0;
}
```
- 문자열들의 배열 arr를 사전순으로 정렬하기 위해서 compare_str 함수를 정의하고 main 함수에서 호출해서 정렬하라. #card
id:: 6974adc4-0d34-4885-b1a9-400634df4adc
- ```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // strcmp 사용
int compare_str(const void *a, const void *b) {
// a와 b는 "문자열(char*)"을 가리키는 포인터(void*)임.
// 따라서 *(char**)a 로 캐스팅하여 실제 문자열 주소를 얻어야 함.
return strcmp(*(char **)a, *(char **)b);
}
int main() {
const char *arr[] = {"banana", "apple", "cherry"};
int n = 3;
qsort(arr, n, sizeof(char *), compare_str);
for(int i=0; i<n; i++) printf("%s\n", arr[i]);
// 결과: "apple", "banana", "cherry"
}
```