국기3기 정규수업 9&10일차 메모

2015. 3. 11. 20:10창고

728x90
728x90

9일차

전체 토론

1장 ~ 10장까지 전체 정리

 

10일차

 포인터
 int* a;
 주소의 저장이 주 목적.
 운영체제로부터 메모리공간 어딘가에 타입에 상관없이
 4바이트의 메모리공간을 할당받고 그 주소위에는 a라는 방을 만들고
 그 방안에는 쓰레기 주소값이 들어있다.(32비트운영체제)
 
 운영체제에서 처리하기 좋아하는 단위가 1워드.
 한 번에 프로세서가 램에 올리는게 1워드.

 int *a = 0; // 0x00000000은 운영체제가 쓰지 않는 주소.
 Null Pointer - 아무것도 가리키지 않는 주소.
 널 포인터와 주소만 저장할 수 있다. 주소와 0!
 모든 포인터는 초기화 시 Null로 초기화!

 내부적으로 얼마씩 연산해야하는지 알아하기 때문이다.

 -----------------휴식-------------------
 변수 앞에 아스테리스크를 붙이는게 추천!

 포인터 차원에 대하여.
 &a 이것도 포인터라고 볼 수 있다. a의 주소이고 포인터다.

 // 그림 그리기, 소스 파일 출력 되는 이유.

 -----------------------------------------
 배열
 int a[];
 운영체제로 부터 메모리공간 어딘가에 정수형 int 4바이트*배열의 크기만큼
 메모리를 연속적으로 할당 받고 그 주소의 맨 앞에 a라는 문패를 달고 각방에는 쓰레기값이 들어있다.

 메모리를 순차적으로 할당하여 쓰는 선형 자료구조
 배열의 첨자는 상수만 가능하다. - 리터럴 상수, 심볼릭 상수
 C에서는 #define을 사용한다.(call by name에 가깝다. 이름으로 호출.)
 C에서는 const로 상수화한 것은 첨자로 들어갈 수 없다.
 열거자들도 리터럴 상수처럼 사용하기 때문에 들어갈 수 있다.

 [] = *(a + sizeof(타입)*index)
 
 아버지의 양주. int a[5]. a[5]의 값.. 알 수 없다!
 배열명은 포인터이다! 상수 포인터이다.

 const 상수는 무조건 초기화 해줘야합니다.

 중요 - a와 a[0] 여기서 a는 a[0]와 같이 살고 있다(공유한다). a와 &a가 주소값이 같게 나온다.
 
 배열포인터 vs 일반포인터
 배열포인터는 시작이 a, 일반포인터는 아무곳이나. 일반포인터가 빠르다.
 배열 포인터는 포인터 상수
 
 배열은 자료구조다!
 동형의 자료형을 메모리에 연속적으로 할당하여 사용하는 자료구조.
 
 ----------------------------------------------------------

 포인터
 포 + 정수 : a+x = a + sizeof(type)*x
 포 - 정수 : 반대
 포 - 포  : 정수 거리

 -------------------------------------------------------------
 
 문자열
 문자열에는 '\0' 널 종료문자가 있다.




728x90
반응형