더북(TheBook)

함수의 매개변수가 배열인 경우 내부적으로 포인터로 취급하기 때문에 vector_add 함수는 포인터와 함께 동작한다.

int main(int argc, char* argv[])
{
    double *x = new double[3], *y = new double[3], *sum = new double[3];
    for (unsigned i = 0; i < 3; ++i)
        x[i] = i + 2, y[i] = 4.2 * I;
    vector_add(3, x, y, sum);
    ...
}

포인터를 사용하면 sizeof 트릭을 사용할 수 없다. sizeof는 단지 우리에게 포인터의 바이트 크기를 제공할 것이고 따라서 요소 개수에 독립적이다. 그 외에도 대부분의 상황에서 포인터와 배열은 서로 바꿔 쓸 수 있다. 포인터는 (앞의 목록에서와같이) 배열 인수와 배열을 포인터 인수로 전달할 수 있다. 배열 인수와 포인터 인수의 유일하게 다른 점은 정의다. 크기가 n인 배열을 정의하면 n개의 항목에 대한 공간을 예약하고 포인터를 정의하면 주소를 보유할 공간만 예약한다.

배열부터 시작했기 때문에 포인터 사용과 관련해 첫 번째 단계를 살펴보기 전에 두 번째 단계부터 살펴봤다. 포인터의 간단한 사용 방법은 하나의 단일 데이터 항목을 동적으로 할당하는 방법이다.

int* ip = new int;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.