프로그래밍/C 프로그래밍

C언어의 정적함수

에이티에스 2023. 7. 1. 09:31
728x90

C 프로그래밍 언어의 함수는 기본적으로 전역입니다. 이것은 프로그래머가 처음에 선언된 파일 외부에 있는 함수에 쉽게 액세스할 수 있음을 의미합니다.

 

이로 인해 다양한 문제가 발생할 수 있으며 이 액세스를 제한할 수 있는 방법이 있어야 합니다. 프로그래머가이 액세스를 제한하려는 경우 선언 된 함수를 정적으로 만드는 간단한 해결책이 있습니다.

함수는 의도한 함수 앞에 static 키워드를 넣기만 하면 static으로 만들 수 있습니다.

 

C의 함수

함수는 특정 작업을 수행하는 독립적인 명령문 블록입니다. 함수는 프로그램에서 반복되는 여러 명령문을 단일 단위 또는 블록으로 래핑합니다. 이 명령문(단위)의 래핑은 함수 이름으로 알려진 이름으로 식별됩니다.

 

참고 1: 모든 C 프로그램은 코드 줄 수가 아무리 쉽고 적더라도 항상 main() 함수인 하나 이상의 함수로 구성됩니다.

참고 2: C 프로그래밍 언어에서 함수는 기본적으로 전역입니다.

 

선언:

returnType  functionName( parameters)
 {
   		function body
 }

예제:

#include<stdio.h>
int multiplication();  // function declaration


int main()
{   


   int output;   //local variable definition   
    
   output = multiplication();


    printf("The product of the two numbers is: %d\n",output);
    return 0;
}


int multiplication()
{
    int num1 = 5;
    int num2 = 15;


    return num1 * num2;
}

 

C의 정적 함수

C 프로그래밍 언어의 함수는 기본적으로 전역입니다. 이것은 프로그래머가 처음에 선언된 파일 외부에 있는 함수에 쉽게 액세스할 수 있음을 의미합니다

.

함수 앞에 'static' 키워드를 추가하여 함수를 정적으로 만들 수 있습니다.

 

예제 1: 비정적 함수

int sum(int a, int b)
{
printf(“This a non-static function, it is global by default”);
}

 

예제 2: 정적 함수

static int fun1(void)
{
printf(“This is a static function”);
}

예제 1에서 sum() 함수는 정적이 아닙니다. 즉, sum()이 선언된 파일 외부에서 sum()에 액세스하려는 경우 쉽게 액세스할 수 있습니다.

그러나 예제 2에서는 fun1() 함수가 static으로 선언됩니다. 전역 함수인 sum()과 달리 fun1()에 대한 액세스는 fun1()이 선언된 파일로 제한됩니다.

 

함수를 정적으로 만드는 또 다른 이유는 재사용 기능입니다. 함수를 정적으로 만들면 다른 파일에서 동일한 함수 이름을 재사용할 수 있습니다. 또한 함수를 static으로 선언하면 보안도 제공됩니다.

 

 

예를 통해 정적 함수의 중요성을 이해합시다.

프로그램 1

C 프로젝트 안에 file_1.c와 main.c라는 두 개의 파일이 있다고 가정합니다.

두 파일의 내용은 다음과 같습니다.

 

1) file_1.c

static int sum(int a, int b)
{
int result;
result = a+b;
return result;
}

 

2) 메인.c

int sum(int, int);
int main()
{
int addition = sum(5, 7);
printf(“%d”, addition);
return 0;
}

 

코드 설명:

위의 코드가 컴파일되면 콘솔에 오류가 반영됩니다. 이 오류는 변수 sum을 static으로 선언하기 때문에 발생합니다. sum()을 static으로 선언하면 함수는 file_1.c에서만 볼 수 있으므로 이 파일 내에서 액세스가 제한됩니다.

 

프로그램 2 : 정적 함수를 보여주는 C 프로그램

#include<stdio.h>
static int mul(int a, int b)  // declaring the function as static
{
int result;  // declaring the local variables


result = a*b;
printf("We are inside the static function - mul() \n ");
return result;
}


int mul(int, int);
int main()
{
int product = mul(3, 8);


printf("The output of the intended calculation is %d", product);
return 0;
}

프로그램 출력 :

 

코드 설명:

위의 프로그램에서 mul() 함수는 두 숫자에 대해 곱셈 연산을 수행하고 "우리는 정적 함수 - mul() 안에 있습니다" 라는 문장을 인쇄하는 정적 함수로 선언됩니다.

main() 함수에 의해 함수 호출이 수행되면 main() 함수는 mul() 함수를 호출하고 원하는 출력을 얻습니다.

 

정적 함수 mul()이 자체 파일에서 호출될 때 프로그램이 올바르게 작동합니다. 즉, mul()과 main()은 모두 하나의 파일 내에서 선언되므로 이 파일 내에 액세스할 수 있습니다. 그렇기 때문에 mul() 함수가 static으로 선언된 경우에도 위의 코드에서 원하는 결과를 가져올 수 있습니다.

728x90
반응형
그리드형

'프로그래밍 > C 프로그래밍' 카테고리의 다른 글

HTML 색상코드 정보  (0) 2024.01.31
C언어의 문자열  (0) 2023.07.01
C언어의 파일 처리  (0) 2023.06.30
C언어의 데이터 타입  (0) 2023.06.30
C언어의 배열  (0) 2023.06.30