#cs50
노트 5개
Computer Science
C 프로그래밍C 언어의 컴파일 과정과 자료형·연산자·문자열, 포인터와 메모리, 구조체·공용체와 함수 포인터, 스코프와 링키지, 입출력, 빌드 도구(gcc·make)와 디버깅 도구, 호출 규약과 저수준 최적화, 역사와 표준.
Computer Science › C Programming
포인터와 메모리C에서 주소와 포인터로 메모리를 다루는 법과 자주 걸리는 함정. 주소·역참조, 문자열의 실체, 동적 할당과 저장 기간, 스택과 힙, 배열과 포인터가 다른 경우, 읽기 전용 리터럴, const의 위치, 이중 포인터, 댕글링 포인터, memcpy와 memmove, malloc/free와 new/delete의 짝.
Computer Science › C Programming
C 기초: 컴파일, 자료형, 연산자, 제어문, 함수, 배열과 문자열비트와 바이트로 정보를 표현하는 법, 소스 코드가 실행 파일이 되는 4단계 컴파일 과정, 디버깅, C 자료형의 크기, 연산자와 수식의 함정(정수 나눗셈, 증감의 미정의 동작, 대입식, 단락 평가, 우선순위), 제어문(if·switch·반복문·goto)과 함수(원형, 값에 의한 호출), 배열 초기화 규칙, 널 종단 문자열과 ctype.h·string.h 함수의 함정(strncpy, strtok, gets 대신 fgets, atoi 대신 strtol), 명령행 인자.
Computer Science › C Programming
C 입력과 파일 입출력scanf로 표준 입력을 받고, fopen·fprintf·fread·fclose로 파일을 읽고 쓰는 C 표준 라이브러리(stdio)의 기본 입출력. 매직 넘버로 JPEG를 판별하는 바이너리 읽기 예제를 담는다.
Algorithm › Data Structure
기초 자료구조: 배열에서 트라이까지연산의 약속(추상 자료형)과 구현(자료구조)을 나누는 관점, 배열과 realloc 크기 조정 비용, 배열·행렬 문제의 요령(부분 배열과 부분 수열, 인덱스 변환, 전치), 연결 리스트(C 구조체·Kotlin 예제)와 둘 중 고르는 기준, 더미 노드·제자리 뒤집기 같은 연결 리스트 기법, 층을 쌓아 건너뛰는 스킵 리스트, 이진 탐색 트리와 균형, 해시 테이블과 충돌, 트라이, 얕은 복사와 깊은 복사.