[C 언어] - Pointer & Array

RuiN·2022년 8월 4일
0

C

목록 보기
3/6
post-thumbnail

이전 포스트에 Pointer에 대해서 다루었습니다.
이번에는 Pointer 와 Array의 관계에 대해서 다루고자 합니다.


Pointer & Array

포인터와 배열은 매우 긴밀한 관계를 가지고 있습니다.

    int arrayName[10];

// 10개의 공간을 가진 arrayName이라는 이름을 가진 배열을 선언합니다.

arrayName 이라는 배열은 10개의 정수 (40바이트) 를 수용할 수 있는 메모리가 할당 됩니다.

여기서 배열의 이름( arrayName )은 배열의 시작 주소를 저장하는 포인터 변수가 됩니다.
단, 그 값을 변경할 수 없습니다.


Example

#include <stdio.h>

int main(void) {
    int sum, i, average;
    int num[10];
    for (int i = 0; i < 10; ++i)
        scanf("%d", &num[i]);
    sum = calculate_sum(num);
    average = sum / 10;
    printf("%d\n", average);
    return 0;
}


int calculate_sum(int *array) {
    int sum, i;
    sum = 0;
    for (int i = 0; i < 10; ++i) {
        sum = sum + array[i];
    }
    return sum;
}

위와 같은 예제 코드가 있습니다.
순서대로 설명해보겠습니다.

  • 정수형 배열을 인자로 받는 calculate_sum이라는 함수를 생성합니다.
    • 그냥 단순히 배열의 값들을 모두다 합해서 sum 이라는 값을 return하는 함수입니다.
  • main 함수에서 num[10] (정수를 담을 10개의 공간을 가진 num이라는 배열) 을 선언
  • scnaf 로 10개의 숫자를 입력하고 for문으로 num 배열에 넣어줍니다.
  • 그리고 정수를 담을 sum 에 calculate_sum 함수를 통해 모든 합을 넣어줍니다.
  • 그다음 , average에 sum / 10 을 하여 평균을 구하고
  • printf 로 평균값을 출력합니다.

여기서

sum = calculate_sum(num)

인자로 받는 num 은 배열 num의 주소값입니다.
즉 주소값을 인자로 넘겨줍니다.
그렇다면 calculate_sum 함수는 주소값을 받아서 함수를 실행하게 됩니다.

정리하자면, 배열을 매개변수로 받을 때 int array[ ] 대신
Pointer로 받을 수도 있습니다.


profile
어디까지 올라갈지 궁금한 하루

0개의 댓글