17년도에 c언어를 공부를 한 적이 있다.
전자공학과에서 소프트웨어 학과를 전과를 하였고, 특이하게도 C언어를 전자공학과에서 배우고 소프트웨어 학과에서는 배우지 않았다.
주로 python을 사용하여 C언어에 대해서 잊혀지게 되었고, 전공 이론을 던진 나는 지금이라도 해보자는 의미로 C언어를 시작으로 여러가지 공부를 할 예정이다.
예전의 배운 지식 + 파이썬을 사용하면서 배운점들을 되새겨보며 금방금방 배울 수 있을 것 같다.
블로그를 잘 쓰지 않아 잘 작성하지 못하겠지만, 나도 공부를 할겸 또 최대한 내가 이해한 대로 적으며 나와 비슷한 이해방식을 가진 사람들에게 도움이되면 더 좋겠다는 생각으로 작성을 해 본다.
1단계: C 언어 기초
- printf() 함수 사용
- 기본적인 C 언어 구조 이해 (#include, int main(), return 0)
- 변수와 자료형
- 기본 자료형 (int, float, char, double 등)
- 변수 선언 및 초기화
- 상수와 #define 사용
- 입력과 출력
- printf와 scanf 함수 사용
- 사용자로부터 값 입력 받기
2단계: 제어문과 반복문
- 조건문
- if, else, else if
- 중첩 조건문
- switch 문
- 반복문
- for, while, do-while
- 반복문 종료 (break, continue)
- 중첩 반복문
- 논리 연산자
- &&, ||, !
- 비교 연산자 (==, !=, <, >, <=, >=)
3단계: 함수와 배열
- 함수
- 함수 선언, 정의, 호출
- 반환 값과 인수
- 매개변수 전달 (값에 의한 전달, 참조에 의한 전달)
- void 함수
- 재귀 함수
- 배열
- 1차원 배열
- 다차원 배열 (2차원 배열, 3차원 배열)
- 배열과 포인터의 관계
- 배열을 함수에 전달
- 문자열 처리
- 문자열 배열과 포인터
- strlen
- rcpy
- rcmp
- strcat 등 문자열 함수 사용
4단계: 포인터와 동적 메모리 할당
- 포인터
- 포인터의 개념과 선언
- 포인터 연산 (&, *)
- 포인터와 배열
- 포인터를 매개변수로 사용하는 함수
- 동적 메모리 할당
- malloc, calloc, realloc, free
- 메모리 누수 방지
- 동적 배열 사용
- 포인터 배열, 함수 포인터
- 포인터 배열
- 함수 포인터
5단계: 구조체와 파일 입출력
- 구조체
- 구조체 선언 및 사용
- 구조체 배열
- 구조체 포인터
- typedef를 사용한 구조체 별칭
- 파일 입출력
- 파일 열기, 읽기, 쓰기 (fopen, fclose, fread, fwrite, fprintf, fscanf)
- 텍스트 파일과 바이너리 파일 처리
- 파일 처리에서 발생할 수 있는 오류 처리
6단계: 고급 개념 및 최적화
- 비트 연산자
- 비트 연산자 (&, |, ^, ~, <<, >>)
- 비트 마스크 기법
- 메모리 관리
- 메모리 최적화 기법
- 메모리 할당과 해제 관리
- 메모리 누수 및 디버깅
- 다중 파일 프로그램
- 여러 소스 파일 사용
- 헤더 파일 (.h)와 구현 파일 (.c)
- Makefile 사용 (빌드 자동화)
7단계: 심화 주제
- 연결리스트
- 단일 연결 리스트
- 이중 연결 리스트
- 연결 리스트를 사용한 데이터 구조 구현
- 스택과 큐
- 스택(Stack)과 큐(Queue)의 개념
- 배열과 연결리스트를 이용한 스택과 큐 구현
- 알고리즘
- 정렬 알고리즘 (버블 정렬, 선택 정렬, 삽입 정렬)
- 검색 알고리즘 (이진 검색, 선형 검색)
- 재귀 알고리즘
- 멀티스레딩 (기본 개념)
- POSIX 스레드(pthread) 사용
- 스레드 간 동기화 기법 (뮤텍스, 세마포어)
8단계: 프로젝트와 응용
- 시스템 프로그래밍
- 파일 시스템 작업
- 프로세스 및 스레드 관리
- 시스템 호출
- 임베디드 시스템
- 하드웨어와의 인터페이스
- 센서 및 액추에이터 제어
- 프로젝트 실습
- C로 구현한 프로젝트 (예: 학생 관리 시스템, 계산기, 메모리 관리 프로그램 등)
- 알고리즘 구현 및 최적화 프로젝트