-
C언어 함수 수업 후 정리카테고리 없음 2025. 5. 26. 16:08
C 프로그램의 기본 틀
콘솔기반 C 프로그램은 main()함수로 시작
main()함수는 콘솔 기반 C 프로그램의 시작점(entry point)
하나의 프로그램에서 반드시 하나만 존재
리턴 값이 없는 함수나 매개 변수가 없는 함수는 그 위치에 비어 있다는 뜻의 "void"를 씀
매개 변수 리스트에 쓰는 "void"는 생략 할 수 있지만 리턴형에 쓰는 "void"는 생략 불가.
C프로그램은 합수의 집합
큰 프로그램 하나를 여러 개의 함수로 분할하여 구현하는
구조적 프로그래밍(structured programming) 방식의 기본.
메인 함수에서 프로그래밍이 시작되며 메인함수에서 다른 함수를 호출 할수 있으며
함수를 호출할때마다 실행이 됨
함수에 입력시키는것을 매개변수(parameter)
또는 전달인자 (인수,argument)라 함
함수가 돌려주는 결과 값을 반환값 또는 리턴값(return value)라 함
main()함수
메인함수는 뜻이 의미하듯 가장 중요한 함수로 한 프로그램에 반드시 하나만 존재.
프로그램의 어느 위치에서든 상관없이 제일 먼저 실행됨
콘솔기반 C 프로그램의 시작점
함수를 직접 만들기 위해서는 함수의 이름 리턴값 매개벼수 실행코드 등을 작성해야함
함수명
동사,모두소문자와 단어 사이 언더스코어를 사용.
동사,의미가 바뀌는 부분은 대문자,나머지는 소문자
예:add(),addNumber(),deleteName()
동사,첫글자와 의미가 바뀌는 부분은 대문자,나머지는 소문자
예:AddNumber(),DeleteName()
함수의 정의,호출
함수 정의(definition)
함수를 만드는것을 함수를 정의 한다고 함
함수 이름만들기 이름,매개변수,리턴형,기능
함수호출(call)
함수를 만드는 것을 함수를 정의 한다고 함
함수를 만든 (정의) 후 함수를 사용(호출)
함수 사용하기 이름, 매개변수
함수선언(prototype)
함수의 사용법.
이름,매개변수,리턴형
컴파일러에게 함수에 대한 정보를 미리 줌
함수 정의의 첫번쨰 줄로 세미콜론으로 끝나는 문장을 만듦
함수의 머리부분을 다음과 같이 하나의 문장(세미콜론으로 끝남)으로
만드는것을 함수 선언 또는 원형이라 함
함수의 반환값
결과 값을 호출한 함수로 변환
return문을 만나면 그 함수는 종료 후 다음 함수로 넘어감
main 함수의 경우 return문을 만나면 프로그램이 끝남
return 문은 하나의 값만 되돌려줌(포인터 사용 시 둘 이상의 값을 반환 가능)
main()함수에서 리턴값은 프로그램이 끝나면서 os에 전달되는 값
재귀 함수(recursive)
함수가 함수내에서 자기 자신을 호출 하는것
재귀 호출을 허용하는 함수를 재귀함
함수의 반복 호출로 시간과 메모리 효율성이 떨어지며 스택 오버플로우의 주의가 필요함
재귀함수는 반복문을 이용한 함수로 변환이 가능
스택오버플로우
함수 내부에서 사용하는 변수들을 스택이란 곳에 저장이 되는데 마련된 스택의 크기를 초과하였기 떄문
발생 하는 문제
함수가 끝나면 스택 영역을 다른 함수에서 사용할 수 있는데 재귀적 호출에서는 재귀 함수가 끝나지 않고 계속 재귀적으로 실행되므로 스택에 값이 들어오기만 하고(push라고 함) 제거(pop)가 되지 않는 것
실매개변수,형식 매개변수
함수들 간에 서로 데이터를 교환할 때 사용하는 것을 함수의 매개변수라고 함
실매개변수(actual parameter, argument)
함수를 호출할 때 사용하는 매개변수
형식매개변수(formal parameter, parameter)
함수 정의에서 사용하는 매개변수
매개변수를 전달 하는 방법,
C언어에서 기본적으로 값에 의한 호출 (call by value)
실매개변수의 값을 형식매개변수로 전달
이 방법은 실매개변수를 형식매개변수로 전달할 뿐 함수 내부에서 형식매개변수가 변경되더라도 실매개변수는 변경되지 않음
형식매개변수가 변하면 실매개변수도 변하게 하려면 포인터를 이용하여 call by address로 구현해야 함
구조적 프로그래밍
함수는 큰 프로그램 하나를 여러 개의 모듈로 분할하여 구현하는 구조적 프로그래밍 방식의 기본이며,
모듈화 프로그램이 가능하게 함