λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Category135

13 Array C μ–Έμ–΄μ—μ„œ 배열은 λ™μΌν•œ 데이터 ν˜•μ‹μ˜ μ—¬λŸ¬ μš”μ†Œλ₯Ό ν•˜λ‚˜μ˜ λ³€μˆ˜μ— μ—°μ†μ μœΌλ‘œ μ €μž₯ν•˜λŠ” 자료 κ΅¬μ‘°μž…λ‹ˆλ‹€. 각 μš”μ†ŒλŠ” 인덱슀λ₯Ό μ‚¬μš©ν•˜μ—¬ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. 배열을 μ„ μ–Έν•˜κ³  μ‚¬μš©ν•˜λŠ” 방법에 λŒ€ν•΄ κ°„λž΅ν•˜κ²Œ μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€. λ°°μ—΄μ˜ νŠΉμ§• 항상 값이 (μ΄ˆκΈ°ν™”) μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. [ ] μΉΈ μ•ˆμ—λŠ” μƒμˆ˜λ§Œ 올 수 μžˆμŠ΅λ‹ˆλ‹€. arr[10] = { 1, 2 } -> 배열이 10μΉΈ 이기 λ•Œλ¬Έμ— 8칸은 0으둜 λ‚˜μ˜΅λ‹ˆλ‹€. arr[] = { 1, 2 ) -> 값이 2κ°œκ°€ 있기 λ•Œλ¬Έμ— 2칸이 μžλ™μœΌλ‘œ ν• λ‹Ήλ©λ‹ˆλ‹€. λ°°μ—΄κ³Ό 반볡문 반볡문과 ν•¨κ»˜ 배열을 μ‚¬μš©ν•˜λ©΄ κ°„νŽΈν•˜κ²Œ λͺ¨λ“  μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. 닀차원 λ°°μ—΄ C μ–Έμ–΄μ—μ„œλŠ” 닀차원 배열도 μ§€μ›λ©λ‹ˆλ‹€. 2차원 배열은 ν–‰(row)κ³Ό μ—΄(column)둜 κ΅¬μ„±λ˜λ©°, 닀차원 배열은 μ—¬λŸ¬ .. 2024. 1. 24.
12 Pointer ν¬μΈν„°λŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό μ €μž₯ν•˜λŠ” λ³€μˆ˜λ‘œ, ν•΄λ‹Ή μ£Όμ†Œμ— μ €μž₯된 데이터에 μ ‘κ·Όν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” C μ–Έμ–΄μ—μ„œ 맀우 κ°•λ ₯ν•˜κ³  μ€‘μš”ν•œ κΈ°λŠ₯ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 포인터λ₯Ό μ‚¬μš©ν•˜λ©΄ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 직접 μ‘°μž‘ν•˜μ—¬ λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ ν¬μΈν„°μ˜ μ£Όμš” κ°œλ…κ³Ό ν™œμš© 사둀λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. Pointer level 1 더보기 #include int main() { int a; int *b; a = 3; printf("a = %d\n", a); // 3 printf("&a = %u\n", &a); // a address b = &a; printf("b = %u\n", b); // a address *b = 5; printf("*b = %d\n", *b); // 5 printf("a = %d\n", a); // .. 2024. 1. 24.
11 function (ν•¨μˆ˜) C μ–Έμ–΄μ—μ„œ ν•¨μˆ˜λŠ” μ½”λ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” 기본적인 블둝 쀑 ν•˜λ‚˜λ‘œ, νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ λ¬ΆμŒμž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ λͺ¨λ“ˆν™”와 μž¬μ‚¬μš©μ΄ κ°€λŠ₯해지며, ν”„λ‘œκ·Έλž¨μ„ 논리적이고 μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ λ‹¨μœ„λ‘œ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜λŠ” νŠΉμ •ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. return_type: ν•¨μˆ˜κ°€ λ°˜ν™˜ν•˜λŠ” κ°’μ˜ μžλ£Œν˜•μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. λ§Œμ•½ ν•¨μˆ˜κ°€ μ•„λ¬΄λŸ° 값을 λ°˜ν™˜ν•˜μ§€ μ•Šμ„ 경우 voidλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. function_name: ν•¨μˆ˜μ˜ 이름을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ 이 이름을 μ‚¬μš©ν•˜μ—¬ ν˜ΈμΆœν•©λ‹ˆλ‹€. parameters: ν•¨μˆ˜μ— μ „λ‹¬λ˜λŠ” λ§€κ°œλ³€μˆ˜λ“€μ˜ λͺ©λ‘μž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ 이 λ§€κ°œλ³€μˆ˜λ“€μ„ μ „λ‹¬ν•˜μ—¬ ν•¨μˆ˜κ°€ μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜ λ‚΄μš©: μ€‘κ΄„ν˜Έ {}둜 λ‘˜λŸ¬μ‹ΈμΈ 뢀뢄에.. 2024. 1. 23.
10 string (feat. random ν•¨μˆ˜) C μ–Έμ–΄μ—μ„œ λ¬Έμžμ—΄μ€ λ¬Έμžλ“€μ˜ λ°°μ—΄λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€. λ¬Έμžμ—΄μ€ μ’…μ’… null 문자('\0')둜 λλ‚˜λ©°, 이 null λ¬ΈμžλŠ” λ¬Έμžμ—΄μ˜ 끝을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. C μ–Έμ–΄μ—μ„œλŠ” λ¬Έμžμ—΄μ„ char λ°°μ—΄λ‘œ μ •μ˜ν•˜κ³ , 이 배열을 μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ λ‹€λ£Ήλ‹ˆλ‹€. 그러면 λ‹€μŒ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 더보기 #include void main() { char str[20]; // λ¬Έμžμ—΄μ€ μ—°μ†λœ 집합! str[0] = 'h'; str[1] = 'e'; str[2] = 'l'; str[3] = 'l'; str[4] = 'o'; str[5] = '\0'; char str1 = 'h'; char str2 = 'e'; char str3 = 'l'; char str4 = 'l'; char str5 = 'o'; char str6 = '\0'; p.. 2024. 1. 23.
9 while & do-while (feat. break & continue) while 루프와 do-while λ£¨ν”„λŠ” 두 가지 λ‹€λ₯Έ ν˜•νƒœμ˜ λ°˜λ³΅λ¬Έμž…λ‹ˆλ‹€. 이 두 루프 λͺ¨λ‘ 쑰건이 참인 λ™μ•ˆ μ½”λ“œλ₯Ό 반볡 μ‹€ν–‰ν•˜λ©°, 쑰건이 거짓이 되면 반볡이 μ’…λ£Œλ©λ‹ˆλ‹€. while 루프 while λ£¨ν”„λŠ” 반볡 μ‹œμž‘ 전에 쑰건을 κ²€μ‚¬ν•˜κ³ , 쑰건이 참인 κ²½μš°μ—λ§Œ 루프 λ‚΄μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 1λΆ€ν„° 5κΉŒμ§€μ˜ 숫자λ₯Ό 좜λ ₯ν•˜λŠ” κ°„λ‹¨ν•œ while λ£¨ν”„λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€: do-while loop do-while λ£¨ν”„λŠ” λ¨Όμ € μ½”λ“œλ₯Ό ν•œ 번 μ‹€ν–‰ν•œ 후에 쑰건을 κ²€μ‚¬ν•©λ‹ˆλ‹€. λ”°λΌμ„œ do-while λ£¨ν”„λŠ” μ΅œμ†Œν•œ ν•œ λ²ˆμ€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 1λΆ€ν„° 5κΉŒμ§€μ˜ 숫자λ₯Ό 좜λ ₯ν•˜λŠ” do-while λ£¨ν”„λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€: do-while λ£¨ν”„λŠ” 루프 λ‚΄λΆ€μ˜ μ½”λ“œκ°€ μ΅œμ†Œν•œ ν•œ.. 2024. 1. 23.
8 for loop (feat. Nested loop) C μ–Έμ–΄μ—μ„œ for λ£¨ν”„λŠ” λ°˜λ³΅λ¬Έμ„ κ΅¬ν˜„ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. for λ£¨ν”„λŠ” μ΄ˆκΈ°ν™” ꡬ문, 쑰건식, μ¦κ°μ‹μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 일반적인 for λ£¨ν”„μ˜ ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. μ΄ˆκΈ°ν™” ꡬ문 (Initialization): 루프가 μ‹œμž‘λ  λ•Œ ν•œ 번만 μ‹€ν–‰λ˜λŠ” λΆ€λΆ„μœΌλ‘œ, λ³€μˆ˜μ˜ μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. 쑰건식 (Condition): 맀 λ°˜λ³΅λ§ˆλ‹€ ν‰κ°€λ˜μ–΄ μ°Έ(true) λ˜λŠ” 거짓(false)으둜 νŒλ‹¨λ˜λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€. 쑰건식이 참인 λ™μ•ˆ 루프가 계속 μ‹€ν–‰λ©λ‹ˆλ‹€. 증감식 (Increment/Decrement): 각 반볡이 끝날 λ•Œλ§ˆλ‹€ μ‹€ν–‰λ˜λŠ” λΆ€λΆ„μœΌλ‘œ, 일반적으둜 λ³€μˆ˜λ₯Ό μ¦κ°€μ‹œν‚€κ±°λ‚˜ κ°μ†Œμ‹œν‚€λŠ” 역할을 ν•©λ‹ˆλ‹€. Nested loop 이쀑 λ°˜λ³΅λ¬Έμ€ ν•˜λ‚˜μ˜ 반볡문 μ•ˆμ— λ‹€λ₯Έ 반볡문이 μ€‘μ²©λ˜μ–΄ μžˆλŠ” ꡬ쑰λ₯Ό λ§ν•©λ‹ˆ.. 2024. 1. 23.
7 if & switch if statement if 문은 쑰건을 ν‰κ°€ν•˜μ—¬ ν•΄λ‹Ή 쑰건이 μ°Έ(true)인 κ²½μš°μ— μ½”λ“œ 블둝을 μ‹€ν–‰ν•˜λŠ” μ‘°κ±΄λ¬Έμž…λ‹ˆλ‹€. C μ–Έμ–΄μ—μ„œ if 문은 λ‹€μŒκ³Ό 같은 기본적인 ν˜•νƒœλ₯Ό κ°–μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ "쑰건"은 λΆˆλ¦¬μ–Έ κ°’ λ˜λŠ” λΆˆλ¦¬μ–Έ 값을 λ°˜ν™˜ν•˜λŠ” ν‘œν˜„μ‹μž…λ‹ˆλ‹€. λ§Œμ•½ 쑰건이 참이면, μ€‘κ΄„ν˜Έ {} μ•ˆμ— μžˆλŠ” μ½”λ“œ 블둝이 μ‹€ν–‰λ˜κ³ , 쑰건이 거짓이면 블둝은 λ¬΄μ‹œλ©λ‹ˆλ‹€. if 문은 λ‹¨λ…μœΌλ‘œ μ‚¬μš©λ  μˆ˜λ„ 있고, elseλ‚˜ else if λ¬Έκ³Ό ν•¨κ»˜ μ‚¬μš©λ  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ μ½”λ“œμ—μ„œ else ifλŠ” 좔가적인 쑰건을 κ²€μ‚¬ν•˜λ©°, elseλŠ” μ–΄λ–€ 쑰건도 λ§Œμ‘±ν•˜μ§€ μ•Šμ„ λ•Œ μ‹€ν–‰λ©λ‹ˆλ‹€. μ—¬λŸ¬ 개의 else if 블둝을 μΆ”κ°€ν•˜μ—¬ λ‹€μ–‘ν•œ 쑰건을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Switch statement switch 문은 νŠΉμ • λ³€μˆ˜μ˜ 값에 λ”°.. 2024. 1. 23.
6 scanf ν•¨μˆ˜ (feat. format specifiers) C μ–Έμ–΄μ—μ„œ scanf ν•¨μˆ˜λŠ” ν‘œμ€€ μž…λ ₯μ—μ„œ ν˜•μ‹μ„ μ§€μ •ν•˜μ—¬ 데이터λ₯Ό μ½μ–΄μ˜€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. scanf ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‚˜ λ‹€λ₯Έ μž…λ ₯ μ†ŒμŠ€μ—μ„œ μ‚¬μš©μžλ‘œλΆ€ν„° μž…λ ₯을 λ°›μ•„ λ³€μˆ˜μ— μ €μž₯ν•  λ•Œ 주둜 μ‚¬μš©λ©λ‹ˆλ‹€. μœ„μ˜ μ½”λ“œμ—μ„œ %dλŠ” μ •μˆ˜λ₯Ό μž…λ ₯λ°›λŠ” ν˜•μ‹ μ§€μ •μžμž…λ‹ˆλ‹€. &num은 λ³€μˆ˜ num의 μ£Όμ†Œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. scanf ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•œ μ •μˆ˜λ₯Ό μ½μ–΄μ™€μ„œ ν•΄λ‹Ή λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ˜ˆμ‹œλ„ ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 더보기 #include // scanf -> ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μ•„μ„œ μ €μž₯ int main(void) { int one, two, three; printf("μ„Έ 가지 μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš© : "); scanf_s("%d %d %d", &one, &two, &three); printf("첫 번째 κ°’μ€μš” : %d\n.. 2024. 1. 23.
5 Operator C μ–Έμ–΄μ˜ μ—°μ‚°μžμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. C μ–Έμ–΄λŠ” λ‹€μ–‘ν•œ μ—°μ‚°μžλ₯Ό μ œκ³΅ν•˜μ—¬ μ‚°μˆ , 논리, 비ꡐ, λŒ€μž… λ“± λ‹€μ–‘ν•œ 연산을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λž˜μ—μ„œ λͺ‡ 가지 μ£Όμš”ν•œ μ—°μ‚°μžλ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€. 1) μ‚°μˆ  μ—°μ‚°μž (Arithmetic Operators) + (λ”ν•˜κΈ°) - (λΉΌκΈ°) * (κ³±ν•˜κΈ°) / (λ‚˜λˆ„κΈ°) % (λ‚˜λ¨Έμ§€) 2) 증감 μ—°μ‚°μž (Increment and Decrement Operators) 3) 관계 μ—°μ‚°μž (Relational Operators) == (κ°™μŒ) != (같지 μ•ŠμŒ) (크닀) = (ν¬κ±°λ‚˜ κ°™λ‹€) 4) 논리 μ—°μ‚°μž (Logical Operators) && (논리 AND) || (논리 OR) ! (논리 NOT) 5) λΉ„νŠΈ μ—°μ‚°μž (Bitwise Operators) x = 5 = 0 0 .. 2024. 1. 23.