포인터는 동적으로 할당된 배열의 주소를 저장하고 함수에 인수로 전달되는 배열에 사용됩니다. 다른 컨텍스트에서 배열과 포인터는 서로 다른 두 가지이며 이 문을 정당화하기 위해 다음 프로그램을 참조하십시오. 다차원 배열은 양식, a[i][j]입니다. 이러한 배열에 대한 포인터를 만드는 방법을 살펴보겠습니다. 우리가 지금 알다시피, 배열의 이름은 기본 주소를 제공합니다. a[i][j]에서 a는 이 배열의 기본 주소를 제공하며, +0 + 0도 기본 주소, 즉 [0][0] 요소의 주소도 제공합니다. 3) 루프에서 증분 연산 (p ++)은 다음 위치 (다음 요소의 위치)를 얻기 위해 포인터 변수에서 수행되며,이 산술은 각 데이터에서 사용되는 바이트가 있더라도 모든 유형의 배열 (모든 데이터 유형 이중, char, int 등)에 대해 동일합니다. 유형이 다릅니다. 내 이유가 올바르지 않은 경우 (나는 믿는 것), “&val[0]“과 “val[0]“의 차이를 설명하십시오. p에 주소가 있으면 위의 예제에서 볼 수 있듯이 *p는 p에 저장된 주소에서 사용할 수 있는 값을 제공합니다. 여기서 ptr은 10개의 정수 배열을 가리킬 수 있는 포인터입니다. 하위 스크립트는 간접보다 우선 순위가 높기 때문에 괄호 안에 간접 연산자와 포인터 이름을 둘러싸야 합니다. 여기서 ptr의 유형은 `10개의 정수 배열에 대한 포인터`입니다.

참고 : 배열의 0 요소를 가리키는 포인터와 전체 배열을 가리키는 포인터는 완전히 다릅니다. 다음 프로그램은 함수에 배열을 전달합니다. 배열의 요소와 전체 배열을 함수에 전달할 수 있습니다(포인터로 작동하는 배열 이름을 지정하기만 하면). 이제 p++를 사용하여 배열 arr의 모든 요소에 액세스하여 한 요소에서 다른 요소로 이동할 수 있습니다. 다음 그림은 포인터 p 및 ptr을 보여 주며 ptr을 보여 주습니다. 화살표가 더 어둡게 표시되어 배열에 대한 포인터를 나타냅니다. 참고 사항: 1) 배열이 있는 포인터를 사용하는 동안 포인터의 데이터 형식은 배열의 데이터 형식과 일치해야 합니다. 2) 당신은 또한 다음과 같은 포인터를 초기화하기 위해 배열 이름을 사용할 수 있습니다 : 3) 지금, 정수 A배열의 배열의 기본 주소로 포인터를 초기화) 배열 이름을 사용하여 (그것은 배열의 기본 주소를 반환) ptr = arr; B) 정수 배열의 첫 번째 요소의 주소를 사용하여 (또한 배열의 기본 주소를 반환) ptr = & arr[0]; 배열 변수에 주소를 할당할 수 없습니다.