C언어/C언어 간단 개념 정리

17강 18강. 함수의 사용 더 보기

Dev dreamer 2023. 1. 11. 22:00

출처: 정혜경 판타스틱 자료구조 입문 (in C)

[무료] 정혜경 판타스틱 자료구조 입문 (in C) - 인프런 | 강의 (inflearn.com)

 

 

 

 

 

# 기호가 붙어 있는 명령어는 전처리기가 처리하는 명령어입니다.

#include stdio.h 를 include 할수 있는 기능과(stdio.h 는 200줄)

#define DAYS -> Macro 상수. DAYS에 365 를 넣음

input 함수선언을 할때 compiler 에게 제공하는 정보는 전달인자는 없고 리턴값은 int를 리턴하는 값이다 라는 것을 선언

output 함수는 리턴값은 없지만 전달인자가 2개가 있다.

calculate 는 리턴값은 int 있고 전달인자도 2개가 있다.

 

위에서 input 함수에게 전달인자가 없다고 선언해놓고 input에 전달인자를 넣으면 컴파일러가 오류로 인지한다.

 

int 함수의 실행(call)후 return이 끝나고 난 후에 number에 대입된다.

전달인자가 없으면 생략이 가능하다.(선언부에서도 가능하다)

전달인자 부분은 생략이 가능하지만 함수 반환 형태를 나타내는 부분은 선언부에서 생략이 불가능하다.

 

20이라는 값을 쳤을때 대입한 숫자가 &num 위치에 있는 데이터 (300번에 있는 데이터를)

%d 10진수 정수로 넣는다.

 

20이라는 값은 return 된다. 돌아온 20이라는 값은 다시 number에 들어간다.

이후 calculate 를 실행한다.

아까 return 받은 number값과 Days 선언한 365 가 전달인자로 전달된다.

 

전달인자로 전달된 number 은 num 에 들어가고 Days 의 365 값은 days 에 들어간다.

 

함수가 끝나면 그 안에 선언된 변수들은 사라지고 return 을 통해 반환값만 보내준다.

그 값을 result 에 담아 다시 output에 전달된다.

 

%d가 있는곳에 순서대로 값을 전달한다.

output 함수에 리턴값이 없는 이유는 역할이 printf 를 통해 계산한 값을 뽑아내는 역할이기 때문이다.

 

 

 

Scanf 는 뒤에 넣을 데이터 값에 주소연산자( & )를 반드시 넣어줘야 한다.

 

#pragma warning(disable4996) -> 이것을 맨위에서 선언해줘야 scanf 관련 오류를 없애 줄 수 있다.

 

리턴값이 있는 함수는 리턴을 생략하지 못하지만 리턴값이 없는 함수는 리턴을 생략할 수 있다.