[2025.03.30] 1차, 2차 배열 함수 전달인자로 사용하기

2025. 3. 31. 01:17·C/본수업
목차
  1. [인자 1개]
  2. [1차 배열]
  3. [2차 배열]

 

우선! 인자 전달의 기본 방식은 값.복.사!

배열을 통째로 넘기는 것은 불가능! ===> 함수 내에서 배열에 접근할 수 있도록 배열의 주.소.값. 전.달!

 

일단 인자 하나 있는 버전 포인터로 사용하는 방법 보여주겠음!

 

 

[인자 1개]

// 문제 14-1, 문제 1
#include <stdio.h>

int SquareByValue(int num)
{
    num *= num;
    return num;
}
void SquareByReference(int *num)
{
    *num *= *num;
}
int main()
{
    int num = 4;
    SquareByValue(num);
    printf("1. %d\n", num);

    SquareByReference(&num);
    printf("2. %d\n", num);

    return 0;
}

 

 

SquareByValue함수는 int형 변수 하나를 받아서 그 정수의 제곱값을 반환해주는 함수임.

이거는 값복사임!! num이라는 변수의 값 4를 복사해서 가져간거임!!

그래서 그 다음 num을 출력했을때, 값이 4 그대로임!!!

 

SquareByReference함수는 int형의 주소값을 하나 받아서 그 주소가 가리키는 값의 제곱을 다시 그 주소가 가리키는 값에 넣어줌.

그 주소가 가리키는 값 = *(변수)

그래서 이 함수를 실행한 다음 num을 출력해보면 16으로 값이 바뀐걸 볼 수 있음!! 이건 주소참조이기 때문!!!!!!!

 

 

 

 

[1차 배열]

#include <stdio.h>

void ShowArraryElem(int *param, int len) // param의 주소와 길이를 입력
{
    for (int i = 0 ; i < len ; i++)
    {
        printf("%d ", param[i]); // param의 주소를 아니까 각 요소값을 인덱싱으로 불러올 수 있음.
    }
    printf("\n");
}

int main()
{
    int arr1[3] = {1, 2, 3};

    ShowArraryElem(arr1, sizeof(arr1)/sizeof(arr1[0]));

    return 0;
}

 

ShowArraryElem 함수는 int형 주소값 하나와 int형 변수 하나를 받아서 배열의 요소를 출력해주는 함수임.

1차 배열인 arr1은 배열이름 자체만 사용하면 배열이 처음 시작하는 주소가 됨.

그래서 함수를 호출할 때, arr1을 그대로 써주면 됨!! (파란색 부분)

ShowArraryElem(arr1, sizeof(arr1)/sizeof(arr1[0]));

그리고 함수 내에서는 인자로 전달된 배열의 길이를 계산할 수 없다고 함!!!!!

그래서 반복문을 돌리고 싶다면, 배열의 길이를 전달인자로 넣어줘야함!!!!

 

 

 

[2차 배열]

#include <stdio.h>
#define SIZE 100

void show_kimbab(char (*list1)[SIZE], int len_list)
{
    for (int i = 0 ; i < len_list ; i++)
    {
        printf("%s ", list1[i]);
    }
}

int main()
{
    char kimbab_list[8][SIZE] =  {"김밥", "치즈김밥", "참치김밥", "김치김밥", "야채김밥", "소고기김밥", "돈까스김밥", "삼겹살김밥"};
    int len_kimbab = sizeof(kimbab_list)/sizeof(kimbab_list[0]);

    show_kimbab(kimbab_list, len_kimbab);

    return 0;
}
 

2차 배열은 문자열로 보여주겠음!!

show_kimbab 이라는 함수는 char형의 2차 배열의 주소와, 길이 변수를 받아서 2차 배열을 출력해주는 함수임.

지금하고 있는 개인프로젝트의 김밥리스트로 예를 들어봤음.

배열의 이름 자체는 주소이기 때문에, 함수를 호출할 때 배열 이름만 적어주면 됨. (kimbab_list)

 

함수를 호출하면 김밥 리스트의 주소가 전달되고, 주소에 인덱싱을 하여 요소 하나하나에 접근하여 모든 요소를 출력할 수 있음!!!

 

 


 

 

 

다덜 이해가 되셨나요오오오오오오오옹ㅇ오오오옹

우리 포인터 박사가 되어보자요!!!!!!

 

 

'C > 본수업' 카테고리의 다른 글

[2025.04.01] 이중 포인터  (0) 2025.04.02
[2025.03.28] 1차 배열과 포인터  (0) 2025.03.28
[2025.03.14] Ch.09_함수_자판기 만들기 함수화 (동영상 포함)  (0) 2025.03.14
[2025.03.14] Ch.08_문자 입출력과 입력 유효성 검사  (0) 2025.03.14
[2025.03.13] Ch.07_C의 제어몬: 분기와 점프_자판기 만들기  (0) 2025.03.13
  1. [인자 1개]
  2. [1차 배열]
  3. [2차 배열]
'C/본수업' 카테고리의 다른 글
  • [2025.04.01] 이중 포인터
  • [2025.03.28] 1차 배열과 포인터
  • [2025.03.14] Ch.09_함수_자판기 만들기 함수화 (동영상 포함)
  • [2025.03.14] Ch.08_문자 입출력과 입력 유효성 검사
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (64)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
      • QT (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c언어
    for문
    파이썬반복문
    C
    else if
    순서도
    파이썬게임
    파이썬조건문
    c우선순위
    파이썬 숫자야구
    if문
    while문
    파이썬예제
    c언어 scanf
    반복문
    Python
    문자열
    파이썬
    코딩
    조건문
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.03.30] 1차, 2차 배열 함수 전달인자로 사용하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.