2011. 2. 26. 19:54

int pArr[]과 int *pArr[]은 완전히 동일한 것. 
=> 둘다 int형 포인터 변수임
(int pArr[]을 사용하는 이유: 함수의 매개 변수를 선언하는 데 있어서 인자로 배열이 전달된다는 것을 좀 더 명확히 할 수 있도록 "int pArr[]"이라는 선언을 허용하는 것일 뿐 


1)int *parr 방식

#include <stdio.h>


int arradd(int* parr, int n);

int main(void){
 int arr[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 int sumofarr;

 sumofarr=arradd(arr, sizeof(arr)/sizeof(int));
 printf("배열의 총합 : %d", sumofarr);
 
 return 0;
}


int arradd(int* parr, int n)
{
 int sum=0;
 int i;

 for(i=0; i<n; i++)
  sum += parr[i];

 return sum;
}





2)int pArr[]방식

#include <stdio.h>


int maxvalue(int pArr[], int n);
int main(void){
 int arr[10]={4,8,3,7,2};
 int max;

 max = maxvalue(arr, sizeof(arr)/sizeof(int));
 printf("최대값 :%d\n", max);


 return 0;
}

int maxvalue(int pArr[], int n){
 int max, i;
 max=pArr[0];
 
 for(i = 1; i<n; i++){
  if(max<pArr[i])
   max=pArr[i];
 }

 return max;
}



둘다 완전히 같은 표현이지만, int arr[]아 같은 선언은 매개 변수 선언시 예외적으로 허용되는 방법에 지나지 않으므로, 되도록이면 int *arr과 같은 선언을 사용하는 것이 좋다.
(단 어느 방법으로 구현하든지 이해할 수 있도록 두 방법다 숙지해야 함.)
Posted by Triany