pointer 2

Cfaq5

Q 6.20 정적 또는 동적으로 할당된 다차원 배열을 함수에 전달할때, 서로 구별하지 않고 쓸 수 있는 방법이 있을까요? Answer 완벽한 방법은 없습니다. 다음 선언이 있다고 할 때: int array[NROWS][NCOLUMNS]; int **array1; /* ragged */ int **array2; /* contiguous */ int *array3; /* "flattened" */ int (*array4)[NCOLUMNS]; int (*array5)[NROWS][NCOLUMNS] 포인터들은 질문 6.16에 나온 것처럼 초기화되어 있다고 가정하고 함수 선 언은 다음과 같다고 가정합니다: void f1a(int a[][NCOLUMNS], int nrows, int ncolumns); void f..

Cfaq4

Q 6.1 소스 파일에 char a[6]이라고 정의하고 extern char *a라고 선언해 두 었는데 왜 동작하지 않을까요? Answer 소스 파일에 정의한 것은 문자(char)로 이루어진 배열입니다. 그리고 선언 한 것은 문자를 가리키는 포인터입니다. 따라서 선언과 정의가 일치하지 않 는 경우입니다. 일반적으로, T 타입을 가리키는 포인터(pointer to type T) 의 타입은 T 타입의 배열(array of type T)과 다릅니다. 대신 extern char a[]을 사용하기 바랍니다. Q 6.4 그럼 왜 함수의 formal parameter로 배열과 포인터 선언을 마음대로 바꿔 쓸 수 있다는 것일까요? Answer 편의상 그런 것입니다. 배열 이름은 즉시 포인터로 바뀌기 때문에4, 배열은 ..