사이드바 열기

//
//      One-Dimension Array.c : Example of One-Dimension array
//
//                      Programmed By Clipper
//  Copyright ⓒ 2007 LaLuna All Rights Reserved.
//

#include <stdio.h>
#include <stdlib.h>

#define MAX 10

int average(int a[], int n) /* int a[]을 int *a로 바꾸어 줘도 괜찮다.*/
{
    int sum = 0;
    int i;

    for(i = 0; i < n; i++)
    {
        sum    += a[i];
    }

    return (sum/n);
}

int main(void)
{
    int array[MAX];
    int i;

    printf("정수를 10개만 입력하세요 : ");
    for(i = 0 ; i < MAX ; i++)                  /* MAX개의 정수를 입력받아 배열에 저장 */
    {
        scanf("%d", array + i);               /* array+i는 &array[i]와 같다. */
    }
    printf("입력하신 정수 %d개의 평균은 %d입니다.\n", MAX, average(array, MAX));
    /* 배열명과 크기를 넘긴다. */
    system("pause");
    return 0;
}
배열을 parameter로 넘겨주는 함수이다.

방법은 포인터로 표현하는 방법과 배열로 표현하는 방법이 있지만 이 두가지 방법은 완전히 같다.

C에서는 배열의 크기를 메모리에 공간이 할당될때만 신경을 쓰고, 실행시에는 배열의 크기에 대해서는 컴파일러가 신경을 써주지 않는다. 이러한 이유로 인해서 average() 함수는 n이라는 배열의 크기를 인자로 따로 받는다. 그리고 인자로 받는 배열 a도  []로 배열표시만 해줄뿐 크기를 명시하지 않는다.
(크기를 명시한다 해도 컴파일러는 이를 무시한다.)


배열은 포인터와 동일한 표현이므로 위의 average()를 포인터의 표현으로 바꿀 수 있다.

int average(int *a, int n)                     /* 포인터로 표현 */

Posted by LaLuna
위로

사이드바 열기