31 - 함수를 만들어보자!!
#include<stdio.h>
int itemCnt = 0;
int money = 100;
// 전역변수
void buyItem() { // 아이템을 사는 함수.
//int itemCnt = 0;
//int money = 100;
itemCnt++;
money -= 10;
printf("아이템을 구매했습니다.\n");
printf("아이템 개수 : %d\n", itemCnt);
printf("잔액 : %d\n", money);
}
int main() {
buyItem();
buyItem();
}
- 아이템 가격이 일정할 때.
#include<stdio.h>
int itemCnt = 0;
int money = 100;
int cost;
void buyItem() { // 아이템을 사는 함수.
//int itemCnt = 0;
//int money = 100;
itemCnt++;
money -= cost;
printf("아이템을 구매했습니다.\n");
printf("아이템 개수 : %d\n", itemCnt);
printf("잔액 : %d\n", money);
}
int main() {
cost = 30;
buyItem();
cost = 50;
buyItem();
}
- 가격을 따로 뽑아서 생각.
#include<stdio.h>
int itemCnt = 0;
int money = 100;
void buyItem(int cost, int cnt) {
itemCnt += cnt;
money -= cost;
printf("아이템을 구매했습니다.\n");
printf("아이템 개수 : %d\n", itemCnt);
printf("잔액 : %d\n", money);
}
int main() {
buyItem(30, 5);
buyItem(50, 7);
}
- 매개변수를 사용...
32 - 함수의 반환
#include<stdio.h>
// 반환형, 이름, 매개변수 리스트
int plus(int a, int b) {
return a + b;
}
int main() {
int sum = plus(3, 5);
printf("%d\n", sum);
}
#include<stdio.h>
int noMeaning() {
printf("first\n");
return 1;
printf("second\n");
return 2;
}
int main() {
int a;
a = noMeaning();
printf("%d\n", a);
}
첫 번째 return문을 만나면 함수가 끝나서 그 아래의 코드들은 전혀 의미가 없음.
반환형이 void 일때, 반환값 없이 return; 만 적어주는 것은 가능.
그러면 마찬가지로 첫 return문을 만나면 함수 종료.
#include<stdio.h>
int itemCnt = 0;
int money = 100;
int buyItem(int cost, int cnt) {
if (money < cost) {
return -1;
}
itemCnt += cnt;
money -= cost;
printf("아이템을 구매했습니다.\n");
printf("아이템 개수 : %d\n", itemCnt);
printf("잔액 : %d\n", money);
return 0;
}
int main() {
int result;
result = buyItem(3000, 5);
if (result == -1) {
printf("돈이 부족하시군요...\n");
}
buyItem(50, 7);
}
이전 예제의 업그레이드 버전.
33 - call-by-value와 call-by-reference
#include<stdio.h>
int main() {
int a, b;
scanf("%d%d", &a, &b);
int tmp = a;
a = b;
b = tmp;
}
a랑 b 값 서로 바꾸는 간단한 코드.
#include<stdio.h>
void swap(int x, int y) {
int tmp = x;
x = y;
y = tmp;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
swap(a, b);
printf("a = %d, b = %d\n", a, b);
}
call by value라서 실제 a,b 값은 바뀌지 않음.
#include<stdio.h>
void swap(int *x, int *y) {
int tmp = *x;
*x = *y;
*y = tmp;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
swap(&a, &b);
printf("a = %d, b = %d\n", a, b);
}
call by reference로 작성한 프로그램.
34 - 프로토타입
prototype : 원형, 시제품
#include<stdio.h>
//걷기
void walk(int distance) {
printf("%dcm를 걸었습니다\n.", distance);
}
//돌기
void rotate(int angle) {
printf("%d도 회전했습니다.\n", angle);
}
int main() {
}
void drawSquare() {
for (int i = 1; i <= 4; i++) {
walk(10);
rotate(90);
}
}
'포너블 멘토링 > 1주차' 카테고리의 다른 글
C++ 배우기 (0) | 2020.03.30 |
---|---|
배열과 포인터 (3) (0) | 2020.03.29 |
배열과 포인터 (2) (0) | 2020.03.29 |
배열과 포인터 (1) (0) | 2020.03.28 |
연산자와 제어문 (3) (0) | 2020.03.26 |