#include <stdio.h>
void dan(int a) {
int i;
printf("%d\n", a);
for (i = 1; i < 10; i = i++) {
printf("%d * %d = %d\n", a, i, a * i);
}
}
int main() {
int j;
for (j = 2; j < 10; j++) {
dan(j);
}
}
지난 글에서 다룬 함수를 이용하여 2단에서 9단까지 출력하는 코드이다.
가장 먼저 의문을 가져봐야 할 점은 main은 int 타입이고 dan은 void 타입이라는 것이다.
함수 앞에 붙는 타입은 함수에서 반환(return)하는 값의 타입이다.
(변수의 타입과 비슷하게 생각하면 되며 6일차 참고)
https://reroot.tistory.com/12
C언어 6일차 #본격적인 프로그래밍
우리가 처음 배울 내용의 코드이다. #define _CRT_SECURE_NO_WARNINGS //scanf함수의 오류를 방지하기위해 사용. (이후 강의에 설명) #include int main(void) { // () 안에 있는 void는 생략 가능. 이후에는 생략..
reroot.tistory.com
즉 int main(), void main()에서
int main()은 main() 함수가 정수형을 반환한다는 의미이고
void main()은 아무 값도 반환하지 않겠다는 의미이다.
다시 한번 설명하자면 특정 함수가
반환(return)하는 값(혹은 변수)의 타입과 일치하면 된다.
ex) 정수를 반환하면 “int 함수명(매개변수)”,
실수(double)를 반환하면 “double 함수명(매개변수)”
정수형 포인터를 반환하면 “int* 함수명(매개변수)”
이때 반환은 함수가 호출된 위치에 반환값을 남기는 것이라고 생각하면 된다.
ex) c = add(a, b);에서 add(a, b)의 반환값이 3이라고 하면
add(a, b) 대신에 3을 씀으로써 c = 3이라고 생각한다.
그다음은 매개변수에 대한 이야기이다.
이 코드에서 j가 int a 에 할당된다.
이 과정을 설명하자면 int main()에서 dan() 함수를 호출하였고 j라는 변수를 보낸다.
그래서 j의 값을 '매개변수' a가 받는다.
<매개변수란 외부의 함수로 부터 받아오는 값을 의미한다.>
변수 a의 타입을 int로 정하는 이유는
외부 함수로부터 받는 변수의 타입과 같아야 하기 때문에
매개변수의 타입을 알맞게 작성해야 한다.
이때 변수명은 함수 호출 때 값을 가져오는 변수의 이름과 같을 필요는 없다.
(같아도 상관없음)
같은 의미를 담고있는 두 코드를 보면서 다시 한번 이해해보자.
#include <stdio.h>
void plus(int a, int b) {
int c;
c = a + b;
printf("%d", c);
}
int main() {
plus(2, 3);
}
#include <stdio.h>
void plus(int a, int b) {
int c;
c = a + b;
printf("%d", c);
}
int main() {
int c, d;
c = 2;
d = 3;
plus(c, d);
}
이 코드에서 main 함수의 c와 plus 함수의 c는 서로 다른 변수이므로 5를 출력한다.
plus(c, d)에서 c는 a에게, d는 b로 값을 받는다.
https://book.naver.com/bookdb/book_detail.nhn?bid=8187381
'프로그래밍 언어 > C언어' 카테고리의 다른 글
C언어 - 타입캐스팅 typecasting (0) | 2021.01.15 |
---|---|
C언어 - 사용자 정의 함수 (최종) (0) | 2021.01.14 |
C언어 - 사용자 정의 함수 (기본편) (0) | 2021.01.12 |
C언어 - switch문 (0) | 2020.08.17 |
C언어 - 논리연산자 (0) | 2020.08.17 |