옥수수와 식빵 그리고 코딩

C | 배열 포인터를 함수의 인수(파라미터)로 전달 본문

C/perpect C

C | 배열 포인터를 함수의 인수(파라미터)로 전달

옥식 2022. 3. 3. 23:01

일차원 정수 배열을 함수로 전달하는 예제

 

#include <stdio.h>

void test(int* array, int index);


int main(void) {

  int array[3] = { 111, 222, 333 };

  // *** 포인터 변수 만들어서 ***
  // 포인터 변수인 ptr 에, array 라는 배열의 첫번째 요소의 번지가 대입
  int* ptr = array;
  // int* ptr = &array[0]; // 이렇게 해도 똑같음

  test(ptr, 3); // test() 함수에, 배열 포인터와, 요소 개수 전달



  // 포인터 변수 ptr 을 만들지 않고 그냥
  // test(&array[0], 3);
  // 이렇게 직접 첫번째 요소의 주소를 넘겨주어도 됨



  // *** 가장 간단한 방법 ***
  // 배열을 함수의 인수로 넘기면 항상 첫번째 요소의 주소만 넘어가므로
  // test(array, 3);
  // 이렇게 해주어도 됩니다. 즉, 배열의 이름은, 배열 첫번째 요소의 번지입니다.

  return 0;
}



void test(int* array, int index) {
  for (int i = 0; i < index; i++)
    printf("[%d] = %d\n", i, array[i]);
}

/* 출력 결과:

[0] = 111
[1] = 222
[2] = 333

*/

출처

http://mwultong.blogspot.com/2006/11/c-array-pass-to-function.html

 

C언어] 배열 포인터를 함수의 인수(파라미터)로 전달; Array Pass to a Function

1차원 배열을 다른 함수로 전달할 때에는 다음과 같은 방법들이 있습니다. 대부분 맨 마지막의 방법을 쓰면 됩니다. 일차원 정수 배열을 함수로 전달 예제 파일명: 0.cpp #include <stdio.h> void test(int*

mwultong.blogspot.com

 

2차원 배열을 함수 인수로 전달

http://mwultong.blogspot.com/2006/11/2-2-dimensional-array-pass-to-function.html

 

2차원 배열, 함수 인수(파라미터)로 전달: 2-Dimensional Array, Pass to a Function

배열을 함수의 파라미터로 넘겨주면 배열이 통째로 카피되어 넘어가는 것이 아니라, 배열의 가장 첫번째 요소의 주소만 넘어갑니다. 그렇기에 결국 자동으로 포인터로 전달됩니다. C언어] 이차

mwultong.blogspot.com

#include <stdio.h>

// 상수를 정의해야 함
#define ROWS 5
#define COLS 4

void test(int array[][COLS], int rows, int cols);



int main(void) {

  // 2차원 정수 배열 foo의 선언과 초기화
  int foo[ROWS][COLS] = {
     { 662,   7,   4,  74 },
     {   8, 396, 299,  95 },
     {  66,  73,  86,   0 },
     { 116,  26, 586,  42 },
     {  84,   7,  41,  11 }
  };


  test(foo, ROWS, COLS);

  puts("");  // 줄바꿈

  return 0;
}


void test(int array[][COLS], int rows, int cols) {
  for (int i = 0; i < rows; i++) {    // 2차원 배열의 요소들 하나씩 출력
    puts("");  // 줄바꿈
    for (int j = 0; j < cols; j++) {
      printf("%d ", array[i][j]);
    }
  }
}
Comments