-
CS50 강의 간단 정리코테/c++ 2023. 6. 18. 20:27
https://www.boostcourse.org/cs112/joinLectures/41307
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org
컴퓨터의 0과 1을 나타내는 스위치는 '트랜지스터'
128개의 문자를 숫자로 표현한 것이 아스키 코드 (A=65=0x41, a=97=0x61)
더 많은 문자를 표현 하는 것은 유니코드
컴파일의 4단계
1.전처리(precompile): #include <stdio.h>
2.컴파일: C언어 -> 어셈블리어 (MOV ADD PUSH)
3.어셈블: 어셈블리 코드 ->오브젝트 코드 (011010011)
4.링크: 라이브러리(헤더)를 포함한 여러 오브젝트 파일을 하나로 합침
명령행 인자
int main(int argc, string argv[])
argc = main 함수가 받은 input의 개수.
argv[] = input 값들이 저장된 배열
argv[0]엔 기본적으로 프로그램명이 저장됨
https://www.rapidtables.org/ko/convert/number/decimal-to-hex.html
10 진수에서 16 진수로 변환기
에서 바이너리 소수 16 진수 받는 사람 바이너리 소수 16 진수
www.rapidtables.org
2개의 16진수는 1byte의 2진수로 변환되다
문자열
string s = "ocid";
char *s = "ocid";
둘의 의미는 동일하다
string s = get_string("s: "); string t = get_string("t: "); // 두 문자열을 비교 (각 문자들을 비교) if (s == t)
두 문자열의 내용이 같더라도 둘의 주소가 다르므로 if문이 성립 x
둘을 비교하려면 반복문으로 하나하나 비교 필요
string s = get_string("s: "); string t = s;
마찬가지로 위와 같이 문자열을 복사하면 얕은 복사가 되어
t의 값을 변경하면 s도 변경된다
char *s = get_string("s: "); char *t = malloc(strlen(s) + 1);
그러므로 malloc을 사용하여 깊은 복사를 해야하며
널문자를 감안하여 1 키워준다
int *tmp = realloc(list, 4 * sizeof(int));
배열 크기 변경을 위해 재할당
메모리 교환
void swap(int a, int b) { int tmp = a; a = b; b = tmp; }
void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; }
위 코드는 함수 내 지역변수 값만 변경되므로 아래와 같이 주소 변수를 써야함
트라이
각 노드가 배열로 이루어진 트리
문자열 검색에 효과적이나 메모리 공간 낭비가 큼