C언어에 대해 소개합니다.

화면 우측의 시계눈끔 인덱스를 이용하여 목차를 확인하고 탐색이 가능합니다.


<aside> 📎

익스트림 C

——— keywords ———

키워드


[11.struct/union/typedef/enum]

struct : 구조체 class느낌 함수내부에 객체선언할때마다 struct 이름 이렇게 해줘야함, '.'으로맴버호출가능

union : 구조체의 한종류이나, 여러객체가 불가능한 유일무이하며, 저장하는 1개의 값으로 모든 맴버변수의 값을 기억하는 특징, 같은메모리

typedef : struct사용을 좀더 class처럼~ struct{}약어; struct객체선언시 약어로 사용가능, enum등 다른 구조체에도 사용가능

약어 이름 = {~,~,~,...}; 식으로 일괄 초기화가능 (class랑 유사)

int a : 3; 비트필드, 최소단위를 자료형에 맞추는 것이 아닌 비트단위로 끊어쓸수 있는 문법 (여기서는 3비트 맴버변수선언)

구조체의 sizeof크기는 맴버변수의 합보다 크거나 같음, 맴버변수가 많아질수록 구조체포인터의 sizeof는 구조체 자체보다 작아짐 

함수의 인수를 struct로 하는 경우 모든 맴버함수를 복사(비쌈)→큰구조체는 어드레스만 전달하고 구조체포인터 간접참조로 필요한 맴버호출

. (좌결합)맴버 참조, 변수의 맴버를 참조함

-> (좌결합)맴버 간접참조, 포인터변수의 맴버를 참조함

구조체의 배열도 가능

구조체의 맴버로 구조체포인터(타 객체 연결용) 보유가능

enum 열거형이름 {식별자,식별자,...} : 식별자를 값으로 저장관리, 가독성증가, 식별자가 너무 복잡할때는 #define매크로와 연계-단순화하여 사용

라이브러리

<aside> 💡

정적라이브러리 .lib

동적라이브러리 .dll

전처리기

<aside> 💡

매크로

아스키코드(ASCII)

#define KEY_NUL 0
#define KEY_SOH 1 // Ctrl+A, 시작 제어 문자(Start of Heading)
#define KEY_STX 2 // Ctrl+B, 시작 텍스트(Start of Text)
#define KEY_ETX 3 // Ctrl+C, 종료 텍스트(End of Text)
#define KEY_EOT 4 // Ctrl+D, 종료 전송(End of Transmission)
#define KEY_ENQ 5 // Ctrl+E, 문의 문자(Enquiry)
#define KEY_ACK 6 // Ctrl+F, 인정 문자(Acknowledge)
#define KEY_BEL 7 // Ctrl+G, 경고 문자(Bell)
#define KEY_BS 8 // Backspace, 백스페이스
#define KEY_HT 9 // Tab, 수평 탭(Horizontal Tab)
#define KEY_LF 10 // Enter (in a terminal), 줄 바꿈(Line Feed)
#define KEY_VT 11 // Ctrl+K, 수직 탭(Vertical Tab)
#define KEY_FF 12 // Ctrl+L, 폼 피드(Form Feed)
#define KEY_CR 13 // Enter, 캐리지 리턴(Carriage Return)
#define KEY_SO 14 // Ctrl+N, 시프트 아웃(Shift Out)
#define KEY_SI 15 // Ctrl+O, 시프트 인(Shift In)
#define KEY_DLE 16 // Ctrl+P, 데이터 링크 이스케이프(Data Link Escape)
#define KEY_DC1 17 // Ctrl+Q, 장치 제어 1(Device Control 1)
#define KEY_DC2 18 // Ctrl+R, 장치 제어 2(Device Control 2)
#define KEY_DC3 19 // Ctrl+S, 장치 제어 3(Device Control 3)
#define KEY_DC4 20 // Ctrl+T, 장치 제어 4(Device Control 4)
#define KEY_NAK 21 // Ctrl+U, 부정 응답(Negative Acknowledge)
#define KEY_SYN 22 // Ctrl+V, 동기화(Synchronous Idle)
#define KEY_ETB 23 // Ctrl+W, 종료 블록(End of Transmission Block)
#define KEY_CAN 24 // Ctrl+X, 취소(Cancel)
#define KEY_EM 25 // Ctrl+Y, 종료 미디어(End of Medium)
#define KEY_SUB 26 // Ctrl+Z, 대체(Substitute)
#define KEY_ESC 27 // ESC, 이스케이프(Escape)
#define KEY_FS 28 // Ctrl+\\, 파일 구분자(File Separator)
#define KEY_GS 29 // Ctrl+], 그룹 구분자(Group Separator)
#define KEY_RS 30 // Ctrl+^, 레코드 구분자(Record Separator)
#define KEY_US 31 // Ctrl+_, 단위 구분자(Unit Separator)
#define KEY_SPACE 32 // Space, 공백
#define KEY_EXCLAMATION 33 // !, 느낌표
#define KEY_QUOTATION_MARK 34 // ", 쌍따옴표
#define KEY_NUMBER_SIGN 35 // #, 샵
#define KEY_DOLLAR_SIGN 36 // $, 달러 기호
#define KEY_PERCENT_SIGN 37 // %, 퍼센트 기호
#define KEY_AMPERSAND 38 // &, 앰퍼샌드
#define KEY_APOSTROPHE 39 // ', 작은따옴표
#define KEY_LEFT_PARENTHESIS 40 // (, 왼쪽 괄호
#define KEY_RIGHT_PARENTHESIS 41 // ), 오른쪽 괄호
#define KEY_ASTERISK 42 // *, 별표
#define KEY_PLUS_SIGN 43 // +, 더하기 기호
#define KEY_COMMA 44 // ,, 쉼표
#define KEY_MINUS_SIGN 45 // -, 빼기 기호
#define KEY_PERIOD 46 // ., 마침표
#define KEY_SLASH 47 // /, 슬래시
#define KEY_0 48 // 0, 숫자 0
#define KEY_1 49 // 1, 숫자 1
#define KEY_2 50 // 2, 숫자 2
#define KEY_3 51 // 3, 숫자 3
#define KEY_4 52 // 4, 숫자 4
#define KEY_5 53 // 5, 숫자 5
#define KEY_6 54 // 6, 숫자 6
#define KEY_7 55 // 7, 숫자 7
#define KEY_8 56 // 8, 숫자 8
#define KEY_9 57 // 9, 숫자 9
#define KEY_COLON 58 // :, 콜론
#define KEY_SEMICOLON 59 // ;, 세미콜론
#define KEY_LESS_THAN_SIGN 60 // <, 작은 부등호
#define KEY_EQUAL_SIGN 61 // =, 등호
#define KEY_GREATER_THAN_SIGN 62 // >, 큰 부등호
#define KEY_QUESTION_MARK 63 // ?, 물음표
#define KEY_AT_SIGN 64 // @, 골뱅이
#define KEY_A 65 // A, 대문자 A
#define KEY_B 66 // B, 대문자 B
#define KEY_C 67 // C, 대문자 C
#define KEY_D 68 // D, 대문자 D
#define KEY_E 69 // E, 대문자 E
#define KEY_F 70 // F, 대문자 F
#define KEY_G 71 // G, 대문자 G
#define KEY_H 72 // H, 대문자 H
#define KEY_I 73 // I, 대문자 I
#define KEY_J 74 // J, 대문자 J
#define KEY_K 75 // K, 대문자 K
#define KEY_L 76 // L, 대문자 L
#define KEY_M 77 // M, 대문자 M
#define KEY_N 78 // N, 대문자 N
#define KEY_O 79 // O, 대문자 O
#define KEY_P 80 // P, 대문자 P
#define KEY_Q 81 // Q, 대문자 Q
#define KEY_R 82 // R, 대문자 R
#define KEY_S 83 // S, 대문자 S
#define KEY_T 84 // T, 대문자 T
#define KEY_U 85 // U, 대문자 U
#define KEY_V 86 // V, 대문자 V
#define KEY_W 87 // W, 대문자 W
#define KEY_X 88 // X, 대문자 X
#define KEY_Y 89 // Y, 대문자 Y
#define KEY_Z 90 // Z, 대문자 Z
#define KEY_LEFT_SQUARE_BRACKET 91 // [, 왼쪽 대괄호
#define KEY_BACKSLASH 92 // \\, 역슬래시
#define KEY_RIGHT_SQUARE_BRACKET 93 // ], 오른쪽 대괄호
#define KEY_CIRCUMFLEX_ACCENT 94 // ^, 캐럿
#define KEY_UNDERSCORE 95 // _, 언더바
#define KEY_GRAVE_ACCENT 96 // `, 그레이브 액센트
#define KEY_a 97 // a, 소문자 a
#define KEY_b 98 // b, 소문자 b
#define KEY_c 99 // c, 소문자 c
#define KEY_d 100 // d, 소문자 d
#define KEY_e 101 // e, 소문자 e
#define KEY_f 102 // f, 소문자 f
#define KEY_g 103 // g, 소문자 g
#define KEY_h 104 // h, 소문자 h
#define KEY_i 105 // i, 소문자 i
#define KEY_j 106 // j, 소문자 j
#define KEY_k 107 // k, 소문자 k
#define KEY_l 108 // l, 소문자 l
#define KEY_m 109 // m, 소문자 m
#define KEY_n 110 // n, 소문자 n
#define KEY_o 111 // o, 소문자 o
#define KEY_p 112 // p, 소문자 p
#define KEY_q 113 // q, 소문자 q
#define KEY_r 114 // r, 소문자 r
#define KEY_s 115 // s, 소문자 s
#define KEY_t 116 // t, 소문자 t
#define KEY_u 117 // u, 소문자 u
#define KEY_v 118 // v, 소문자 v
#define KEY_w 119 // w, 소문자 w
#define KEY_x 120 // x, 소문자 x
#define KEY_y 121 // y, 소문자 y
#define KEY_z 122 // z, 소문자 z
#define KEY_LEFT_CURLY_BRACKET 123 // {, 왼쪽 중괄호
#define KEY_VERTICAL_BAR 124 // |, 수직선
#define KEY_RIGHT_CURLY_BRACKET 125 // }, 오른쪽 중괄호
#define KEY_TILDE 126 // ~, 물결표
#define KEY_DEL 127 // DEL, 삭제