본문 바로가기
컴퓨터 공학/C, C++

C언어 문법 총정리_프로그래밍 독학이나 컴퓨터공학과를 준비하는 분을 위한

by hahehohoo 2020. 7. 21.
반응형

 

C언어 독학이나 컴퓨터공학과를 준비하는 자를 위한 예습용, 복습용 C언어 문법 총 정리

학습자료: 윤성우 열혈C프로그래밍, 포프 C 언매니지드프로그래밍

 

 

■ C 언어를 배워야 하는 이유

'머신러닝은 파이썬, 데이터 통계는 R'이라고 주장하며 '00일만에 개발자 되기'를 광고하는 일명 코딩 교육 사이트들이 많습니다. 또한 C언어는 옛날 언어라며 그런 언매니지드(unmanaged) 언어는 가까운 미래에 더이상 쓰이질 않을 것이라고 합니다. 하지만 이 모든 주장들은 사실은 아닙니다. 

 

C언어는 TIOBE 지수(프로그래밍 언어 순위)로 2019년에는 2위였다가 현재 2020년은 1위 입니다. 

티오베 사이트 : tiobe.com/tiobe-index/

 

TIOBE 자료(2020년 7월) C언어 순위

 

C언어는 2001년 이후 언제나 1위 아니면 2위했던 언어입니다. 여전히 성능이 필요한 운영체제, 임베디드 시스템, 의료장비에서 사용됩니다. 또한 C언어 같은 언매니지드 언어는 다음과 같은 것들을 알기 배워야 합니다.

 

- 메모리 동작 원리

- CPU 동작 원리

- 컴퓨터처럼 생각하는 방법

- 매니지드(managed) 언어에서 지원하는 모든 기능들의 동작원리

 

따라서 빠르게 성장하는 실력있는 프로그래머가 되려면, 언매니지드 언어 알아야 합니다. 

더 자세한 설명은 프로그래머 포프의 영상으로 대체하겠습니다. 

 

youtu.be/ESU2IkFj9VM

■ C 언어 문법 정리 

저는 지금 깊이 있는 자료구조와 알고리즘 이해를 위해 C언어를 공부하고 있습니다. 학습 자료로는 '윤성우 열혈 C 프로그래밍' 책과 강의, 포프의 'C 언매니지드 프로그래밍 강좌' (유료, Udemy에서 진행)를 함께 보고 있습니다. C언어 문법이 워낙 방대하여(최소 저에게는...) 블로그에 정리하며 공부하기로 하였습니다.

 

이 글이 제목처럼 컴퓨터공학으로 진학할 분이나, 편입을 위해 C언어로 알고리즘 준비해야하는 분, 순수하게 C언어를 공부하고 싶은 분에게 도움이 되길 바라여, C언어 문법 정리 글들을 이 페이지에 하나로 정리하였습니다. 필요하신 분들은 잘 활용하길 바랍니다. 

 

이 페이지를 즐겨찾기 해놓으면 편합니다.  

 

※※※ 위에서 언급한 학습 자료 다 제가 직접 알아보고 제 돈 주고 산 책, 강의입니다.

※※※ C언어 기본 문법(주석, 자료형, 연산자 등)은 '전처리기 이해하기' 글까지 작성되면 여유있을 때 다룰 예정입니다.  

 

 


 

# 메모리 이해하기

1 메모리의 종류(스택, 힙, 레지스터?)

2 레지스터(Register)란? 필요한 이유

3 register 키워드란? register 변수의 제약

4 스택(stack) 메모리란?

5 힙(heap) 메모리란?

6 동적메모리란?

7 malloc 짝꿍 함수 free 란?

8 calloc(), memset(), realloc()

9 realloc()의 메모리 누수 문제, 해결책은?

10 정적 vs 동적 메모리

11 동적 메모리의 소유권 문제

12 메모리 정리

 


# 포인터 이해하기

1 포인터 변수란?/선언 방법 / & 연산자

2 참조와 역참조/ 역 참조 연산자 *

3 포인터와 배열의 차이

4 값에 의한 전달 vs 참조에 의한 전달

5 값과 주소를 보호하는 const/const 읽는 방법

6 void 포인터 개념 / 활용도

7 함수 포인터란? 함수를 포인터에 저장할 수 있을까?

8 함수 포인터 쉽게 읽는 방법

9 포인터 배열, 2차원 배열이란? 예제코드로 개념이해하기

10 다중, 이중 포인터란? / 다중 포인터 사용하는 이유

11 포인터 정리 / 용도 / 복습 또 복습하기

 

 

 


 

# C스타일 문자열 이해하기

1 C 스타일 문자열이란?

2 스트림과 데이터의 이동 

3 문자 단위 입출력 함수_putchar, fputc, getchar, fgetc, EOF

4 문자열 단위 입출력 함수_puts, fputs, gets, fgets

5 표준 입출력과 버퍼_버퍼링 하는 이유/fllush 함수/입력 버퍼 비우기

6 입출력 이외의 문자열 관련 함수_strlen, strcpy, strcat, strcmp

7 서식 지정 출력 / 서식 문자열 / 서식 지정자 

8 C스타일 문자열 정리 

 

 


 

# 구조체와 사용자 정의 자료형 이해하기

1_구조체란? 정의/필요성/사용법

2_typedef이란? typedef사용법

3_구조체와 배열, 포인터

4_함수 반환값으서의 구조체

5_공용체(Union Type)이란?

6_열거형(Enumerated Type)란?

 


 

# 파일 입출력 이해하기

1 스트림 생성, 소멸, 파일 읽는 함수_fopen, fclose, fagets

2 파일의 개방모드(Mode)

3 파일복사 feof/바이너리데이터 입출력 fread, fwrite

4 텍스트, 바이너리 데이터 동시 입출력

5 파일 위치 서식자란? fseek, ftell 함수


 

# 전처리기 이해하기

1 전처리기(preprocessor)란? 정의/용도

2 조건부 컴파일(Conditional Compilation)

3 매크로 함수란? 장단점/활용

4 매크로 연산자 #, ## 

 

 

 

반응형


댓글