2015. 3. 11. 20:10ㆍ창고
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' 널 종료문자가 있다.
'창고' 카테고리의 다른 글
국기3기 정규수업 13일차 메모 (0) | 2015.03.22 |
---|---|
국기3기 정규수업 12일차 메모 (2) | 2015.03.15 |
국기3기 정규수업 11일차 메모 (0) | 2015.03.12 |
국기3기 정규수업 8일차 메모 (0) | 2015.03.09 |
20150308 토론정리 (0) | 2015.03.08 |
혼자 연구하는 C/C++ 13장 정리(구조체) (0) | 2015.03.07 |
20150307 토론정리 (0) | 2015.03.07 |