산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 언어에서 1차원 및 2차원 배열을 함수에 전달하는 방법 – 실전 가이드

C 언어에서 1차원 및 2차원 배열을 함수에 전달하는 방법

이 튜토리얼은 C 언어에서 1차원 배열과 다차원 배열 전체를 함수에 전달하는 방법을 명확한 코드 예제와 모범 사례 팁과 함께 설명합니다.

C 언어에서 배열 이름은 함수에 전달될 때 포인터로 변환(Decay)되어, 원본 데이터를 복사하지 않고도 함수가 원래 데이터를 조작할 수 있게 합니다. 이 동작을 이해하는 것은 효율적이고 유지보수하기 쉬운 코드를 작성하는 데 필수적입니다.


개별 배열 요소 전달하기

단일 요소를 전달하는 것은 기본 자료형을 전달하는 것과 동일합니다.

예제 1: 개별 배열 요소 전달

#include <stdio.h>
void display(int age1, int age2) {
    printf("%d\n", age1);
    printf("%d\n", age2);
}
int main() {
    int ageArray[] = {2, 8, 4, 12};
    // display()에 두 번째와 세 번째 요소 전달
    display(ageArray[1], ageArray[2]);
    return 0;
}

출력

8
4

여기서 ageArray[1]과 ageArray[2]를 일반 변수처럼 전달합니다. 함수는 값을 복사하여 받으므로(original array remains unchanged) 원래 배열은 변경되지 않습니다.


전체 1차원 배열 전달하기

함수에 전체 배열을 전달하려면 단순히 배열 이름을 인자로 넘기면 됩니다. 함수 원형에서 매개변수를 배열로 선언해야 하지만, 실제 크기는 생략할 수 있습니다. 컴파일러는 매개변수를 첫 번째 요소를 가리키는 포인터로 처리합니다.

예제 2: 배열의 합 계산

#include <stdio.h>
float calculateSum(float num[]);
int main() {
    float result, num[] = {23.4, 55, 22.6, 3, 40.5, 18};
    // 전체 배열을 calculateSum()에 전달
    result = calculateSum(num);
    printf("Result = %.2f", result);
    return 0;
}
float calculateSum(float num[]) {
    float sum = 0.0;
    for (int i = 0; i < 6; ++i) {
        sum += num[i];
    }
    return sum;
}

출력

Result = 162.50

함수 시그니처 float calculateSum(float num[])는 num이 float 배열을 가리키는 포인터임을 컴파일러에게 알립니다. 루프는 복사 없이 배열을 제자리에서 처리합니다.


다차원 배열 전달하기

다차원 배열도 같은 원리를 따릅니다: 배열 이름은 첫 번째 행을 가리키는 포인터로 변환됩니다. 그러나 컴파일러는 첫 번째 차원을 제외한 모든 차원의 크기를 알아야 올바른 메모리 오프셋을 계산할 수 있습니다.

예제 3: 2차원 배열 전달

#include <stdio.h>
void displayNumbers(int num[2][2]);
int main() {
    int num[2][2];
    printf("4개의 숫자를 입력하세요:\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            scanf("%d", &num[i][j]);
        }
    }
    // 2차원 배열을 함수에 전달
    displayNumbers(num);
    return 0;
}
void displayNumbers(int num[2][2]) {
    printf("출력:\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            printf("%d\n", num[i][j]);
        }
    }
}

출력

4개의 숫자를 입력하세요:
2 3 4 5
출력:
2
3
4
5

함수 원형 void displayNumbers(int num[2][2])는 2×2 정수 배열을 선언합니다. 함수를 호출할 때 단순히 num을 넘기면 컴파일러가 자동으로 포인터 변환을 처리합니다.

행 차원은 생략할 수 있지만 열 크기는 반드시 지정해야 합니다: int num[][2]는 유효하지만, 열 크기는 주소 계산에 필수적입니다.


중요: C 언어는 배열을 함수에 전달하는 것을 허용하지만, 배열을 함수에서 직접 반환하는 것은 지원하지 않습니다. 복잡한 데이터를 반환해야 한다면 포인터나 구조체를 사용하세요.

C 언어

  1. C# 배열 마스터하기: 선언, 초기화, 조작과 LINQ 연산
  2. C 데이터 타입 완벽 해설: int, float, char 등 완전 가이드
  3. 파이썬 pass 문 마스터하기: 실전 가이드
  4. 파이썬 함수 인자 마스터하기: 위치, 키워드, 기본 매개변수
  5. Python 클로저 이해하기: 중첩 함수가 변수 캡처하는 방법
  6. C 비트필드로 메모리 최적화: 플래그 압축과 하드웨어 매핑
  7. C 파일 입출력 완벽 가이드: 열기, 읽기, 쓰기, 위치 제어, 바이너리 처리
  8. C 언어 가변 인자 마스터하기: 실전 가이드
  9. C++ 다형성 이해하기: virtual 함수와 순수 가상 함수
  10. C# 메서드 완벽 가이드: 정의, 호출, 재귀, 매개변수 전달 방식