본문 바로가기

primer plus

[c primer plus] chapter10 배열과 포인터

배열(array)

동일한 하나의 데이터형을 가진 연속된 원소들로 구성된다.

[]  배열이라는 것을 나타낸다.

candy[0]  0은 인텍스(index)이다.

인덱스는 0부터 시작하다.

 

지정 초기화자(designated initializer)

초기화 리스트에서 각괄호 안에 인덱스를 사용하여 특정 원소를 초기화 하도록 지정할 수 있다.

int arr[6] ={[5] = 212};

 

포인터와 배열

포인터는 주소를 기호적으로 사용할 수 있는 방법을 제공한다.

flizny == &flizny[0]

flizny 와 &flizny[0] 둘다 첫번째 원소의 메모리 주소

 

대입하기

포인터에 주소 대입

 

값 구하기(역참조)

*연산자는 그것이 참조하는 주소에 저장되어 있는 값을 구한다.

 

포인터 주소 얻기

포인터 변수는 하나의 주소와 하나의 값을 가진다.

&연산자는 포인터 자체가 어디에 저장되어 있는지를 알려준다.

 

포인터에 정수 더하기

+연산자를 사용할 수 있다.

정수는 포인터가 가리키느 ㄴ데이터형의 바이트 수만큼 곱해진다. 그 결과가 최초의 주소에 더해진다.

 

포인터 증가시키기

배열의 한 원소를 가리키는 포인터를 증가시키면, 그 포인터가 배열의 다음 원소를 가리킨다.

그 타입의 크기만큼 증가 시킨다.

 

포인터에서 정수 빼기

포인터에서 정수를 빼기 위해서 -연산자를 사용할 수 있다.

정수는 포인터가 가리키는 데이터형의 바이트 수만큼 곱해진다.

그 최초의 주소에서 그 결과가 감해진다.

 

포인터 감소시키기

증가 연산자와 감소 연산자의 전위모드와 후위모드 둘다 사용할 수 있다.

 

포인터 사이의 차 구하기

두 포인터 사이의 차를 구할 수 있다.

 

포인터 비교하기

두 포인터가 같은 데이터형을 가리키는 경우에 두 포인터의 값을 비교하기 위해 관계 연산자를 사용할 수 있다.

 

const 

컴파일러에게 상수 데이터를 포함수고 있는 것처럼 다루어야 한다고 지시한다.

원본 배열이 반드시 상수일 필요는 없다.

 

포인터 호환성

int 형 값을 데이터형 변환 없이 double 형 변수에 대입할 수 있지만, 두 데이터형을 가리키는 푄터들은 그렇게 할 수 없다.

 

가변 길이 배열(VAL)

배열의 길이를 변경할 수 있는 것이 아니라 처음 지정할 때 변수를 사용할 수 있다는 뜻이다.

가변 길이 배열은 동적 메모리 할당을 허용한다.