2011. 2. 27. 02:09

int (*pArr)[4];
: int arr1[2][4], int arr2[3][4]와 같은 배열을 가리킬 수 있는 포인터
이렇듯 배열을 가리킬 수 있다고 해서 배열 포인터라 한다.

void show_data(int (*ptr)[4], int a);
    ==
void show_data(int ptr[][4], int a);  <= 함수의 매개변수 선언시에만 가능

#include <stdio.h>

void show_data(int (*ptr)[4], int a);
int main(void)
{
 int arr1[2][4]={1, 2, 3, 4, 5, 6, 7, 8};
 int arr2[3][4]={{1}, {2}, {3}};

 show_data(arr1, 2);
 show_data(arr2, 3);
 
 return 0;
}

void show_data(int (*ptr)[4], int a)
{
 int i, j;
 printf("-------Start Print----------\n");
 for(i=0; i<a; i++)
 {
  for(j=0; j<4; j++)
   printf("%d ", ptr[i][j]);
  printf("\n");

 }

}





☆int (*pArr)[4] 와 int* pArr[4]의 차이점☆
int (*pArr)[4]는 배열을 가리키는 포!인!터이다. (배열포인터)
  int형 변수를 요소로 지니고 포인터 연산시 4칸씩 이동하는 2차원 배열을 가리키는 포인터이다.


int* pArr[4]는 배!열!이다.(포인터배열).
  int형 변수의 주소 값 4개를 저장할 수 있는 배열이다.

Posted by Triany