더북(TheBook)

6.1.4 매개변수로 사용하는 배열

배열을 함수의 매개변수(parameter)로 사용할 수도 있다. printf의 프로토타입에서 본 것처럼 이렇게 배열을 매개변수로 사용할 때는 []가 없을 수도 있다. 이런 매개변수는 초기자가 없기 때문에 배열의 차원을 결정할 수 없다.

TAKEAWAY 6.12 함수의 매개변수로 사용하는 배열에서 가장 안쪽 차원은 제거된다.

TAKEAWAY 6.13 함수의 매개변수로 사용하는 배열에는 sizeof 연산자를 사용하면 안 된다.

배열 매개변수가 더욱 특이한 점은 (TAKEAWAY 6.3에서 말했듯이) 배열 값을 만들 수 없기 때문에 값으로 전달할 수 없다.

TAKEAWAY 6.14 배열 매개변수는 참조 전달 방식(pass by reference)C처럼 작동한다.

예제 6-1을 살펴보자.

 

예제 6-1 매개변수가 배열인 함수

#include <stdio.h>

void swap_double(double a[static 2]) {
  double tmp = a[0];
  a[0] = a[1];
  a[1] = tmp;
}
int main(void) {
  double A[2] = { 1.0, 2.0, };
  swap_double(A);
  printf("A[0] = %g, A[1] = %g\n", A[0], A[1]);
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.