본문 바로가기

C

9장 . C언어의 핵심 함수

[함수의 정의와 선언]

[Main함수 다시보기]

int (반환의 형태) Main (함수의 이름) (void (입력의 형태))

{ (몸체의 시작)

함수의 몸체

} (몸체의 끝)

 

[함수를 정의하는 이유]

  • 모듈화에 의한 프로그램의 질 향상
  • 유지 보수 및 확장의 용이성
  • 문제 해결의 용이성 : Divde & Conquer

[함수선언의 필요성]

컴파일러의 특성상 , 함수는 호출되기 전에 정의되어야 한다.

원형을 선언하고 , 후에 정의를 하여도 된다.

int Add(int a, int b);

int main(void)
{
	Add(3,4);
    return 0;
}
int Add(int a,int b)
{
	return a+b;
}

 

 

[함수 호출 과정의 이해]

 

#include<stdio.h>
int Add(int i,int j)
{
	int result=i+j;
    return result;
}

int main(void)
{
	ind d;
    d=Add(3,4);
    return 0;
}

1.함수가 사용할 인자 (3,4)값을 스택에 넣고 함수의 시작지점으로 점프하여 함수를 시작한다.

2.함수 내에서 사용할 스택 프레임 값들을 할당한다.

3.함수 내용을 수행한다

4.함수가 끝나면 함수 호출된 지점으로 복귀하기 위해 스택을 pop 한다

5.호출한 지점의 다음 라인으로 점프하여 프로그램이 계속 실행된다.

 

 

[변수의 범위]

[변수의 특성에 따른 분류]

  • 지역변수 : 함수 내부 (중괄호)에 선언되는 변수 . 선언된 함수내에서만 접근 가능.전역보다 내부 지역변수가 우선된다.
  • 전역변수 : 함수외에 선언된다 . main 호출전 메모리에 올라가고 ,프로그램 종료시 삭제.어디서든 접근 가능
  • 정적변수 : 함수 내,외부 모두 선언 가능 . 한번만 초기화 되며 , 함수내부에서 선언된다면 함수 내에서만 접근 가능.
  • 레지스터 변수 : 선언에 제한이 많이 따른다.

'C' 카테고리의 다른 글

12장. 포인터의 이해  (0) 2023.01.05
11장 . 1차원 배열  (0) 2023.01.05
8장 . 조건에 따른 분기  (0) 2023.01.02
7장 . 다양한 형태의 반복문  (0) 2023.01.02
6장 . Printf 와 Scanf에 대한 고찰  (1) 2023.01.01