본문 바로가기

포너블 멘토링/1주차

함수 (1)

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