Control Engineering/C Programming
Function&Array
Taesan Kim
2024. 9. 4. 23:56
본 포스팅은 한동대학교 21학번 과학기술전문사관 후보생 최윤석 선배님의 C언어 교육자료로 제작되었음을 알려드립니다. 감사합니다.
Function&Array
Intro
*Function
함수란 코드 내부에서 반복되는 구문이나 특정 의미가 있는 기능을 가지는 코드를 모아두는 것이다.
반환타입 함수이름(인자자료형1 인자1, 인자자료형2 인자2, …)
{
코드
return 함수반환값;
}
Function&Array
1. 배열이 인자로 들어갔을 때는 배열의 주솟값이 전달된다.
void array_input(int array[], int size) //배열의 주솟값이 전달되므로, 배열의 크기를 같이 받는다.
{
...
}
ex)
void test(int array[5])
{
printf("%d\n", sizeof(array));
}
//8(64bit 운영체제) or 4(32bit 운영체제)
이전에 sizeof를 이용한 배열 크기 측정은 함수에서는 불가능하다!
2. 배열은 반환할 수 없다.
int[] return_array()
{
int array[5] = {1, 2, 3, 4, 5};
return array;
}//빌드에러 발생
배열 반환
배열을 반환하기 위해서 포인터로 입력된 배열로 직접 값을 수정해야 한다.
#include <stdio.h>
void set_array(int dst[5])
{
dst[0] = 1;
}
int main()
{
int array[5] = {0};
printf("Before\n");
for(int i = 0; i < 5; i++)
printf("%d\n", array[i]);
set_array(array);
printf("After\n");
for(int i = 0; i < 5; i++)
printf("%d\n", array[i]);
}
일반적으로 입력으로 들어가는 배열은 const 키워드를 추가하여 함수 내에서 변하지 않음을 알려준다.
#include <stdio.h>
void set_array(const int src[5], int dst[5]) //반환용 배열
{
for(int i = 0; i < 5; i++)
dst[i] = src[i] + 1;
}
int main()
{
int array[5] = {0};
int result[5];
set_array(array, result);
for(int i = 0; i < 5; i++)
printf("%d\n", result[i]);
}