c-50

[C언어 50강] 20강. 배열 2차원: 메모리 관점, 행/열 순회

C에서 2차원 배열을 처음 배우면 많은 분이 “행과 열”만 기억하고 끝냅니다. 그런데 실무에서 중요한 건 모양이 아니라 메모리에 실제로 어떻게 놓이는지입니다. 오늘은 int a[3][4] 같은 선언이 메모리에 어떤 의미를 가지는지, 왜 순회 순서가 성능과 직결되는지, 그리고 함수에 전달할 때 왜 두 번째 차원 크기를 알…

[C언어 50강] 19강. 배열 1차원: 선언/초기화/순회, 경계(인덱스)

배열은 C언어에서 “같은 타입의 값을 연속된 메모리 공간에 저장”하는 가장 기본적인 자료구조입니다. 문법은 단순해 보이지만, 실제로는 메모리 배치·인덱스 경계·함수 전달 규칙이 엮여 있어 초급에서 중급으로 넘어가는 분기점이 됩니다. 오늘은 1차원 배열을 단순 문법 암기 대상으로 보지 않고, 왜 배열이 그렇게 동작하는지부…

[C언어 50강] 18강. 저장 클래스: static/extern 개념, 전역 관리 포인트

저장 클래스(storage class)는 변수의 “타입”이 아니라, 그 변수가 어디에 살아 있고(수명, lifetime), 어디서 보이며(가시성, scope/linkage), 기본적으로 어떻게 연결되는지를 결정하는 규칙입니다. 오늘 다룰 static과 extern은 문법은 짧지만 프로젝트가 커질수록 품질을 좌우하는 핵심…

[C언어 50강] 17강. 재귀 함수: 동작 원리, 종료 조건, 대표 예제

재귀 함수는 “함수가 자기 자신을 다시 호출한다”는 문장 하나로 자주 소개되지만, 실무에서 중요한 건 문장 정의가 아니라 호출 스택과 종료 조건을 설계하는 능력입니다. 오늘은 재귀를 단순 암기 대신, 컴퓨터가 실제로 무엇을 쌓고 무엇을 되돌리는지 중심으로 이해해보겠습니다.

[C언어 50강] 16강. 헤더 파일과 모듈화: .h/.c 분리, include guard

C언어 프로젝트가 커질수록 중요한 건 문법 한 줄이 아니라 코드를 어떻게 나누고 연결하느냐입니다. 오늘은 .h/.c 분리와 include guard를 중심으로, “왜 이렇게 나누는지”를 개념부터 잡아보겠습니다. 목표는 단순히 컴파일이 되게 만드는 것이 아니라, 수정 비용이 낮고 오류를 빨리 찾을 수 있는 구조를 만드는…

[C언어 50강] 15강. 매개변수 전달: 값 전달, 지역/전역 변수, 함수 설계

C언어에서 함수는 단순히 코드를 분리하는 문법이 아니라, 데이터가 어디서 만들어지고 어디로 전달되며 누가 변경 권한을 가지는지를 결정하는 경계입니다. 오늘은 매개변수 전달(값 전달), 지역/전역 변수, 함수 설계 원칙을 한 흐름으로 묶어 이해해보겠습니다. 핵심은 문법 자체보다 “왜 이렇게 설계해야 버그가 줄어드는가”를…

[C언어 50강] 14강. 함수 기초: 선언/정의/호출, 반환값, 프로토타입

C언어에서 함수는 “코드를 예쁘게 나누는 문법” 정도가 아니라, 프로그램의 구조와 안정성을 결정하는 가장 기본 단위입니다. 특히 함수 선언, 정의, 호출, 반환값, 프로토타입의 관계를 정확히 이해하면 이후 포인터, 모듈화, 에러 처리, 테스트 가능한 코드 설계까지 한 번에 연결됩니다. 이번 강의는 문법 암기보다 왜 함수…

[C언어 50강] 13강. 반복문 2: do-while, break/continue, goto(개념)

반복문을 어느 정도 쓰기 시작하면 곧바로 만나게 되는 질문이 있습니다. “반복을 멈추고 싶을 때는 어떻게 하지?”, “이번 회차만 건너뛰고 다음으로 가려면?”, “조건을 먼저 검사할지, 한 번 실행하고 검사할지?” 같은 질문입니다. 이번 강의는 do-while, break, continue, 그리고 goto를 문법 소개…

[C언어 50강] 12강. 반복문 1: for / while 기본 패턴

프로그램은 결국 같은 일을 얼마나 정확하게 반복하느냐의 싸움입니다. 조건문이 “갈림길”을 만든다면, 반복문은 “같은 길을 몇 번 걸을지”를 결정합니다. 이번 강의에서는 for와 while을 문법 암기 대상으로 보지 않고, 반복의 시작 조건·지속 조건·종료 조건을 설계하는 도구로 이해해보겠습니다. 특히 실무에서 자주 문제…

[C언어 50강] 11강. switch-case: 분기 처리, fall-through 주의점

C언어는 문법을 외우는 과목이 아니라, 조건을 어떤 방식으로 분해하고 실행 흐름을 통제할지 설계하는 훈련에 가깝습니다. 이번 강의에서는 switch-case를 단순히 "if/else의 대체 문법"으로 보지 않고, 분기 전략을 명확하게 표현하는 도구로 이해해보겠습니다. 특히 C에서 자주 사고가 나는 fall-through…