포인터

    [08] 시스템 프로그래밍 기초 (포인터 심화)

    일반 배열과 포인터로 만든 배열의 차이 먼저 스트링 constants는 텍스트 세그먼트에 저장된다. 이 텍스트 세그먼트는 수정 불가하다. 배열은 스택 영역에 복사를 뜬다. 따라서 수정이 가능하다. 그러나 포인터는 스트링 콘스턴트를 텍스트 세그먼트에 둔 채로 텍스트 세그먼트의 주소값만 받아온다. 이것은 즉, 포인터 배열은 수정이 불가하다는 뜻이다. # a[2][3] 배열이 있다면 다음과 같이 나타낼 수 있다. a[0][0] == **a; a[0][1] == *(*a+1); a[0][2] == *(*a+2); a[1][0] == **(a+1); a[1][1] == *(*(a+1)+1); a[1][2] == *(*(a+1)+2); 배열은 고정적으로 메모리를 할당하는 데에 비해 포인터는 그때마다 동적으로 할당한..

    [07] 시스템 프로그래밍 기초(배열과 포인터)

    배열(Array) p.246 int grade[100]; 이라는 배열이 있다고 하자. 이때 주소값은 0x100이라고 하면 grade[1]의 주소갑은 0x104이다. int가 4byte이기 때문이다. char grade[] = "HANYANG"; 이라는 배열은 문자열의 각각의 문자를 각 문자 배열 안에 넣는 것이다. 따라서 grade[0]에는 'H'가, grade[1]에는 'A'가 들어있다. 주소값을 참조할 때는 &를 쓴다. grade의 주소값을 0x100이라 한다면 &grade[0]는 0x100이다. # Array space 32bit로는 4GB밖에 쓰지 못하기 때문에 64bit 운영체제가 나왔다. Pointer p.248 char *p = grade; p++; 배열은 상수(constant)이지만 포인터..