2.함수
1-1.함수란?
함수란 특정한 작업을 수행하는 또는 서로 관련되어있는 코드들의 모임으로 하나의 단위를 말한다.
function이라고 하며 기능을 뜻한다.
기능을 구현하는 부분을 따로 분리하여 구현한 것으로, 구조화 프로그램의 중요한 개념이다.
※구조화:프로그램을 기능별로 함수화하는 것(프로그램을 기능별로 짜는 것 )
2-2.함수를 사용하는 이유
함수를 사용하는 이유
- 반복적인 프로그래밍을 피할 수 있기 때문이다.
프로그램에서 특정 작업을 여러 번 반복해야 할 때에는 해당 작업을 수행하는 함수를 작성하고 필요할 때마다 그 함수를 호출하면
해당 작업을 계속 반복해서 수행할 수 있다.
- 프로그램을 여러 개의 함수로 나누어 작성하면, 모듈화(구조화)로 인해 전체 코드의 가독성이 좋아진다.(잘 알아볼 수 있다.)
- 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때에도 손쉽게 유지보수를 할 수 있다.
- 함수와 함수를 서로 분리 시킴으로써 모든 변수의 사용을 함수 내에서 독립적으로 선언하여 사용할 수 있게 된다.
2-3.함수의 형태
1 2 3 | int num() { return i; } | cs |
전달X 반환0
1 2 3 | void num(int i) { } | cs |
전달0 반환X
1 2 3 | void num() { } |
전달X 반환X
※반환값 : return 이라고도 하며 현재 있는 함수에서 빠져나가 함수를 호출한 곳으로 되돌아가라는 뜻
return 0;은 0을 반환 return 1;은 1을 반환
※전달인자 : 변수 같은거
2-4.함수 선언법
ex)
반환 자료형 : 함수가 호출된 곳으로 반환하려는 반환값의 타입을 말한다.
반환 자료형은 모든 자료형이 올수 있다.
함수 이름 : main함수의 경우 프로그램 실행시 가장 먼저 실행되는 함수이다.
꼭 필요한 함수이며, 변경할 수 없지만 사용자 정의 함수의 경우에는 일반적인 명명규칙에 따라 사용자 지정이 가능이다.
인수목록 : main함수에는 보통 아무것도 쓰지 않습니다. 하지만 괄호안에 void가 생략된 형태이다.
( )안에 오는 것을 매개변수라고 한다. 작성법은 변수와 똑같지만 초기화를 넣어주면 안된다.
매개변수는 콤바(,)를 이용해 여러개가 올수 있고 아예 없을 수도있다.
매개변수의 타입은 각각 다르게 사용할 수 있다.(int a, float b, char c)
2-5.함수 사용법
1 2 3 4 5 6 7 8 9 10 11 12 | #include<stdio.h> int a(int b) { //함수선언 b = 17; //초기화 printf("%d", b); //출력하기 } int main() { int x=0; //변수 넣기(여기서 x를 초기화해주지않으면 호출할 때 오류남.) a(x); //함수 호출 } | cs |
함수의 이름을 적고 (인수) 쓰고 몸체 작성하고 main 함수 몸체 작성하고 호출하는 식으로 사용된다.
2-6.return이란
return은 함수가 아니라 C언어에서 미리 정해놓은 명령어이다.
뜻은 현재의 함수에서 빠져나와 그 함수를 호출했던 곳으로 되돌아 가라는 뜻이다.
되돌아가면서 호출한 곳에 어떤 값을 반환하라는 것이다.
return 0;이면 0이라는 값 반환 return 1;이면 1이라는 값 반환
어떤 함수에도 쓸 수 있으며 return이 실행되는 즉시 그 함수는 종료된다.
2-7.string.h에 있는 문자열 함수(strcpy,strlen,strcmp)
다 위에 #include<string.h>을 해주어야 한다.
- strcmp()
strcmp(문자열(str1),문자열(str2)로 사용
문자열을 비교하는 함수이다. str1과 str2를 아스키코드의 사전순으로 비교해서 (문자 하나하나)
str1이 작으면 -1, 크면 1, 같으면 0을 반환합니다.
ex)같을 때
1 2 3 4 5 6 7 8 | #include<stdio.h> #include<string.h> int main() { char str1[10] = "12345"; char str2[10] = "12345"; printf("%d", strcmp(str1, str2)); } | cs |
str1이 str2보다 작을 때
1 2 3 4 5 6 7 8 | #include<stdio.h> #include<string.h> int main() { char str1[10] = "1234"; char str2[10] = "12345"; printf("%d", strcmp(str1, str2)); } |
-1반환
str1이 str2보다 클 때
1 2 3 4 5 6 7 8 | #include<stdio.h> #include<string.h> int main() { char str1[10] = "123456"; char str2[10] = "12345"; printf("%d", strcmp(str1, str2)); } | cs |
1반환
- strlen()
문자열의 길이를 반환합니다.
null문자는 길이에서 제외된다.
1 2 3 4 5 6 7 8 9 | #include<stdio.h> #include<string.h> int main() { char a[10] = "asdf"; printf("%d\n", strlen(a)); } | cs |
4출력
- strcpy
1 2 3 4 5 6 7 8 9 | #include<stdio.h> #include<string.h> int main() { char a[10]; char b[10]= "abcd"; strcpy(a, b); printf("%s", a); } | cs |
2-7-1.전달인자
전달인자는 함수를 호출할때 전달되는 실제 값을 의미한다.
함수를 정의할때 ;() 괄호 안에 쓰는 것이 전달인자이다.
아무것도 전달하지 않는다면 void 혹은 아무것도 써주지 않는다.
2-7-2.반환값
return 이라고도 하며 현재 있는 함수에서 빠져나가 함수를 호출한 곳으로 되돌아가라는 뜻
return 0;은 0을 반환 return 1;은 1을 반환 return(값)으로 나타냄.
2-7-3.함수의 기능
코드를 반복하여 적을 필요없이 함수를 호출하면 되기 때문에 매우 편리하다.
쉽게 오류를 수정할 수 있고 분리하여 쓰기 때문에 읽기도 편하다.
'과제' 카테고리의 다른 글
금요일 수업 문제 풀이 (0) | 2018.04.07 |
---|---|
포인터 보고서 (0) | 2018.04.07 |
달팽이 배열 구현 (0) | 2018.04.03 |
정렬 알고리즘 구현 (0) | 2018.04.03 |
배열 문제 풀이 (0) | 2018.03.31 |