11주차 강의 정리(이경훈) - aksrud/3kingOfGod GitHub Wiki
문자열 처리 방식
포인터
주로 상수로 되어있는 문자열의 시작 주소를 이용한다. 이로 인해 readonly변수가 되어 값을 변경 할 수는 없다. (상수 문자열)
배열
!!!!!!!!!!!!!!!!!!!!중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 배열의 이름은 그 배열의 시작 주소이다. p == &p[0] 두개의 표현식은 동치이다. char array는 문자열을 넣으면 각 인덱스 해당하는 공간에 문자를 넣기 때문에 문자열의 문자 자체를 저장한다. 위에서 포인터를 이용하여 저장하는 방식과는 다르게 값을 변경할 수 있다. (변수 문자열)
추가 상식 + 시험
배열에서 초기화하지 않는 원소는 0으로 초기화된다. 이것을 이용해 널문자 '\0'가 정수로 0이기 때문에 이를 이용하여 일부러 초깃값을 안 넣고도 작동됨.
C언어 메모리 구조
code(text) area
명령어, 소스코드 등등이 저장되는 영역
GD(global data)
프로그램 시작시 생성. 종료시 소멸. (전역, 정적 변수, 상수 등등이 있음)
STACK
함수가 호출되면 호출된 함수의 스택 프레임이 생성되고 거기에 지역 변수나 매개변수, 호출이 끝난 뒤 반환 될 주소등등 넣어진 데이터가 차례대로 저장되는 영역을 stack영역이라 한다.
HEAP
동적 메모리 할당으로 할당 받는 메모리 영역이다. C언어에서는 malloc같은 함수를 이용해 원하는 바이트 수 만큼 힙 메모리를 할당 받을 수 있다.