[01] 배열을 전달 받는 함수 예제
#include <stdio.h>
int arrinput(int *arr, int a)
{
for (int i = 0; i < a; i++) {
printf("%d번째 값 입력: ", i + 1);
scanf_s("%d", &arr[i]);
}
}
int readArray(int* arr, int length)
{
printf("배열의 요소 읽어보기: [ ");
for (int i = 0; i < length; i++) {
printf("%d", arr[i]);
if (i + 1 < length)
{
printf(", ");
}
else
{
printf(" ");
}
}
printf("]\n");
}
int main()
{
int arr[3];
arrinput(arr, 3);
readArray(arr, 3);
}
1번째 값 입력: 4
2번째 값 입력: 8
3번째 값 입력: 9
배열의 요소 읽어보기: [ 4, 8, 9 ]
<call by value / call by reference의 차이>
#include<stdio.h>
int input(int seq) {
int a;
printf("%d번째 값을 입력:", seq);
scanf_s("%d", &a);
return a;
}
void swapNumber(int num1, int num2) {
int tem = num1;
num1 = num2;
num2 = tem;
printf("함수 안에서 확인한 결과, num1: %d, num2: %d\n", num1, num2);
}
void ex163() {
int number1 = 33, number2 = 99;
number1 = input(1);
number2 = input(2);
printf("함수 호출 완료 전 확인한 결과, number1: % d, number2 : %d \n", number1, number2);
swapNumber(number1, number2);
printf("함수 호출 완료 후 확인한 결과, number1: %d, number2: %d\n", number1, number2);
}
void swapNumber2(int* num1, int* num2) {
int tem = *num1;
*num1 = *num2;
*num2 = tem;
printf("함수 안에서 확인한 결과, num1: %d, num2: %d\n", *num1, *num2);
}
void ex164() {
int number1 = 33, number2 = 99;
number1 = input(1);
number2 = input(2);
printf("함수 호출 완료 전 확인한 결과, number1: % d, number2 : %d \n", number1, number2);
swapNumber2(&number1, &number2);
printf("함수 호출 완료 후 확인한 결과, number1: %d, number2: %d\n", number1, number2);
}
void main() {
ex163();
ex164();
}
1번째 값을 입력:4
2번째 값을 입력:5
함수 호출 완료 전 확인한 결과, number1: 4, number2 : 5
함수 안에서 확인한 결과, num1: 5, num2: 4
함수 호출 완료 후 확인한 결과, number1: 4, number2: 5
1번째 값을 입력:3
2번째 값을 입력:8
함수 호출 완료 전 확인한 결과, number1: 3, number2 : 8
함수 안에서 확인한 결과, num1: 8, num2: 3
함수 호출 완료 후 확인한 결과, number1: 8, number2: 3
#include<stdio.h>
int input(int seq) {
int a;
printf("%d번째 값을 입력:", seq);
scanf("%d", &a);
return a;
}
int getDiffByValue(int a1, int a2) {
return a1 - a2;
}
void callDiffByRef(int* a1, int* a2) {
if (*a1 < *a2) {
int tmp = *a1;
*a1 = *a2;
*a2 = tmp;
}
}
void pr1() {
int x1 = input(1);
int x2 = input(2);
printf("getDiffByValue(x1,x2): %d\n ", getDiffByValue(x1, x2));
callDiffByRef(&x1, &x2);
printf("callDiffByRef(&x1, &x2) x1: %d, x2: %d", x1, x2);
}
void main() {
pr1();
}
1번째 값을 입력:3
2번째 값을 입력:4
getDiffByValue(x1,x2): -1
callDiffByRef(&x1, &x2) x1: 4, x2: 3
#include<stdio.h>
void swapNumvbers(int* a1, int* a2, int* a3) {
int tmp = *a1;
*a1 = *a3;
*a3 = *a2;
*a2 = tmp;
}
void pr2() {
int num1 = 5, num2 = 8, num3 = 10;
printf("함수 호출 전 num1 num2 num3: %d %d %d \n", num1, num2, num3);
swapNumvbers(&num1, &num2, &num3);
printf("함수 호출 후 num1 num2 num3: %d %d %d \n", num1, num2, num3);
}
int recursiveSum(int n, int* result) {
if (n != 0) {
*result += n;
n--;
recursiveSum(n, result);
}
return *result;
}
void main() {
pr2();
}
함수 호출 전 num1 num2 num3: 5 8 10
함수 호출 후 num1 num2 num3: 10 5 8
#include <stdio.h>
int input(int seq)
{
int a;
printf("%d번째 값을 입력해 주세요: ", seq);
scanf_s("%d", &a);
return a;
}
void getDiffByValue(int num1, int num2)
{
//두 수의 차 구하기
printf("두 수의 차 : %d\n", num1 - num2);
}
//두 수 중 큰 정수 구하기
void callDiffByRef(int *num1, int *num2)
{
*num1 = &num1;
*num2 = &num2;
}
void run2(int *num1, int *num2)
{
int temp;
if (*num1 < *num2) {
temp=*num2;
*num2 = *num1;
*num1 = temp;
}
printf("두 수 중 큰 정수의 값이 앞으로 오도록 : %d %d\n", *num1, *num2);
}
void main()
{
int num1, num2;
num1 = input(1);
num2 = input(2);
getDiffByValue(num1, num2);
run2(&num1,&num2);
}
1번째 값을 입력해 주세요: 3
2번째 값을 입력해 주세요: 9
두 수의 차 : -6
두 수 중 큰 정수의 값이 앞으로 오도록 : 9 3
[03] 1~n까지의 합 구하기
void pr3() { //1~n까지의 합
int n = input(1);
int result = 0;
result = recursiveSum(n, &result);
printf("결과: %d", result);
}
void main() {
pr3();
}
1번째 값을 입력:5
결과: 15
728x90
'Dev. > C++' 카테고리의 다른 글
포인터의 포인터/싱글포인터/더블포인터 (0) | 2022.04.01 |
---|---|
c언어 난수 발생시키기/가위바위보/오름차순,내림차순 (0) | 2022.04.01 |
함수의 이해 응용문제 (0) | 2022.03.28 |
함수의 이해 기본예제/함수정의와 호출/지역변수 전역변수 (0) | 2022.03.28 |
함수값 반환하기 문제 (0) | 2022.03.27 |
댓글