character 타입을 이용하여 operator와 숫자로 input을 분류하고, input을 체크하는 함수 만들기(팀플)
(p.214)
C는 object를 어떻게 처리할 것인가, JAVA는 object 중심으로 처리해서 작성 방식이 반대이다.
C는 절차지향적 언어이기 때문에, 함수 호출을 최소화하면서 모듈화 시키는 것이 중요하다.
stack : First in last out 방식의 자료구조
메모리의 구조 : Code(코드 저장), Data(전역변수), 나머지(heap: 메모리가 부족할 때 자동으로 메모리를 할당한다(Dynamic memory allocation), stack : a->b->c에서 return은 c->b->a)
Stack의 memory pointer는 아래로 내려가고, heap의 memory pointer는 위로 올라간다. 둘이 맞닿으면 os가 메모리 부족으로 프로세스를 kill한다.
PC register : CPU가 이 레지스터를 사용하여 명령어를 실행시킨다.
Stack 구조로 메모리가 되어있기 때문에, call-by-value가 가능하다. 함수가 끝나면 전부 pop()으로 날려버리기 때문이다.
전역변수는 data에 저장되고, 지역변수는 stack에 저장되므로 전역변수는 초기화를 안해도 0으로 되고, 지역변수는 쓰레기 값이 저장될 수 있다.
static 변수는 data영역에 저장해서 값이 남아있다.
파일을 분할했을 때, global 변수 이름을 명시하기 위해서는 extern을 쓴다.
굉장히 많고 빠르게 참조하는 변수는 register를 앞에 붙여 레지스터에 넣는다.
debugging을 할 때, assert()함수를 이용하자. 내부의 값이 false라면 프로그램 종료, true이면 계속 실행한다.
사람에게 쉬운 알고리즘은 컴퓨터에게 어려운 경우가 많다.