카테고리 없음
4-2. C언어 문법 (함수)
리버윤
2024. 9. 24. 13:47
728x90
#include <stdio.h>
int up(int x) { //함수 정의, 여기서 x는 parameter
return x+1;
}
int main(void) {
up(3); //함수 호출, 여기서 3은 argument
return 0;
}
- 함수
: 특정한 작업을 하도록 맏들어진 독립적인 단위 모듈
큰 프로그램 하나를 여러개의 함수로 분할하여 구현하는 구조적 프로그래밍(structured programming) 방식의 가본
int main(void)
{
코드 작성
return 0;
}
리턴형 함수이름(매개변수 리스트)
{ // 함수의 시작
코드 작성
0을 리턴함. 문장 끝에는 “;”을 씀
} // 함수의 끝
리턴형에 쓰는 void는 생략 불기
● 날짜, 시간 함수
#define _CRT_SECURE_NO_WARNINGS // Visual Studio에서 보안 경고를 방지하기 위해 정의
#include <stdio.h> // 표준 입출력 라이브러리 포함
#include <time.h> // 시간 관련 기능을 위한 라이브러리 포함
int main(void) {
time_t t = time(NULL); // 현재 시간을 초 단위로 반환하여 t에 저장
struct tm tm = *localtime(&t); // t를 로컬 시간으로 변환하여 tm 구조체에 저장
// 현재 날짜와 시간을 출력
printf("현재: %d년 %d월 %d일 %d:%d:%d\n",
tm.tm_year + 1900, // tm_year는 1900년 이후의 년도이므로 1900을 더함
tm.tm_mon + 1, // tm_mon은 0부터 시작하므로 1을 더함
tm.tm_mday, // 일
tm.tm_hour, // 시
tm.tm_min, // 분
tm.tm_sec); // 초
// 컴파일 시간 정보를 출력
printf("__TIMESTAMP__ : %s\n", __TIMESTAMP__);
return 0; // 프로그램 종료
}
● 유틸리티 함수
#include <stdio.h> // 표준 입출력 라이브러리 포함
#include <stdlib.h> // srand(), rand() 함수 사용을 위한 라이브러리 포함
#include <time.h> // time() 함수 사용을 위한 라이브러리 포함
int main()
{
srand((unsigned int)time(NULL)); // 현재 시간을 시드 값으로 사용하여 난수 생성기 초기화
// 0부터 9까지의 난수를 100개 생성하여 출력
for(int i = 0; i < 100; i++) {
printf(" %d", rand() % 10); // rand()로 생성된 난수를 10으로 나눈 나머지를 출력
}
return 0; // 프로그램 종료
}
● 사용자 정의 함수
1) 함수명
- 동사, 모두 소문자와 단어 사이 언더스코어
- 동사, 의미가 바뀌는 부분은 대문자, 나머지는 소문자 (lower camel case) - 주로 이 방식을 많이 사용함
- 동사, 첫 글자와 의미가 바뀌는 부분은 대문자, 나머지는 소문자 (upper camel case)
2) 정의, 호출, 선언
- 정의 - 함수 만들기
void display(void) { print("안녕"); }
- 호출 - 함수 사용하기
display();
- 선언 - 함수의 사용법
void display(void);
#include <iostream>
void display(void); //함수 선언, 프로토타입(prototype). 순차적으로 코드를 읽기때문에 정의가 뒤에 있는 경우 앞에서 이렇게 선언해주는 거.
int main(void) {
std::cout << "Hi!\n";
display(); //함수 호출
return 0;
}
void display(void) { //함수 정의. 리턴값이 없기 때문에 void. 생략 불가능 꼭 써야함
std::cout << "하이!\n";
}
#include <iostream>
void display(void); //함수 선언, 프로토타입(prototype).
void printDoubleNumber(int x);
int returnDoubleNumber(int x);
int main(void)
{
int x;
printDoubleNumber(3);
x = returnDoubleNumber(10);
std::cout << x; //리턴값을 보관했다가 사용하는것이 좋음
//std::cout << returnDoubleNumber(7); //위와 같은 용도인데 위의 것은 더 많이 사용함
display(); //함수 호출
return 0;
}
void display(void) //함수 정의. 리턴값이 없기 때문에 void. 생략 불가능 꼭 써야함
{
std::cout << "하이!\n";
}
void printDoubleNumber(int x)
{
std::cout << x * 2;
}
int returnDoubleNumber(int x)
{
return x * 2;
}
● return문
리턴형 함수이름(매개변수리스트)
{
코드 작성
}
#include <iostream>
void display(void); //함수 선언, 프로토타입(prototype).
void printDoubleNumber(int x);
int returnDoubleNumber(int x);
int add(int x, int y);
double divide(int x, int y); // 반환 타입을 double로 변경
int main(void)
{
int x;
display(); //함수 호출
printDoubleNumber(3);
x = returnDoubleNumber(10);
std::cout << x; //리턴값을 보관했다가 사용하는것이 좋음
//std::cout << returnDoubleNumber(7); //위와 같은 용도인데 위의 것은 더 많이 사용함
x = add(3, 4);
std::cout << x;
double result = divide(3, 2); // 결과를 double 변수에 저장
std::cout << result << std::endl; // 소수점까지 출력
return 0;
}
void display(void) //함수 정의. 리턴값이 없기 때문에 void. 생략 불가능 꼭 써야함
{
std::cout << "하이!\n";
}
void printDoubleNumber(int x)
{
std::cout << x * 2;
}
int returnDoubleNumber(int x)
{
return x * 2;
}
int add(int x, int y)
{
return x + y;
}
// divide 함수의 매개변수와 반환 타입을 double로 변경
double divide(int x, int y)
{
return static_cast<double>(x) / y; // x를 double로 변환하여 나눗셈 수행
}
728x90