C 프로그래밍의 정적

Static C Programming



이 튜토리얼에서는 static 키워드를 변수와 함수에 적용하여 설명합니다. Static은 C 프로그래밍에서 사용되는 키워드이며 다음 구문을 사용하여 적용할 수 있습니다.

정적 {데이터 유형} {변수 이름}







정적 지역 변수

함수의 변수가 정적이면 변수는 함수 호출 간에 값을 유지합니다.



//예제1.c

#포함하다

정수재미1()
{

정수세다=0;
세다++;
반품세다;
}

정수재미2()
{
공전 정수세다=0;
세다++;
반품세다;
}

정수기본()
{
인쇄 ('fun1 첫 번째 호출 반환: %dN',재미1());
인쇄 ('fun1 두 번째 호출 반환: %dNN',재미1());

인쇄 ('fun2 첫 번째 호출 반환: %dN',재미2());
인쇄 ('fun2 두 번째 호출 반환: %dN',재미2());

반품 0;
}


예제 1.c에는 두 가지 기능이 있습니다. 재미1() 그리고 재미2() . 에 재미1() , 하나의 변수(count)를 선언하고 0으로 초기화합니다. 그런 다음 count 변수를 증가시키고 결과 값을 반환합니다. 사용 기본() , 우리는 부른다 재미1() 를 두 번 호출할 때 count 변수가 지워지기 때문에 매번 값 1이 반환됩니다. 재미1() 완성 됐습니다. 에 재미2() count 변수를 정적 변수로 선언했습니다. 따라서 그 가치가 보존됩니다. 사용 기본() , 우리는 부른다 재미2() 두 번: 처음에는 1 값이 반환되고 두 번째에는 2 값이 반환됩니다.



정적 전역 변수

정적 전역 변수는 다른 전역 변수와 같은 방식으로 작동하지만 다른 C 프로그램에서 액세스할 수 없습니다.





정적 함수

C에서 함수는 기본적으로 전역적입니다. 그러나 정적 함수를 선언하면 해당 함수는 로컬이며 다른 C 프로그램에서 액세스할 수 없습니다.

정적 변수의 초기화

정적 변수가 명시적으로 초기화되지 않은 경우 0으로 초기화됩니다.



//예제2.c

#포함하다

정수기본()
{
공전 정수NS;

인쇄 ('i의 값: %dN',NS);

반품 0;
}


Example2.c에서 초기화되지 않은 정적 변수 i를 선언했습니다. 그러나 변수는 정적이므로 자동으로 0으로 초기화됩니다.

정적 변수는 상수 리터럴로 초기화해야 합니다. 함수의 반환 값을 사용하여 정적 변수를 초기화할 수 없습니다.

//예제3.c

#포함하다

정수재미1()
{
반품 5;
}

정수기본()
{
공전 정수NS=재미1();
인쇄 ('i의 값: %dN',NS);
반품 0;
}


Example3.c에서 반환 값을 사용하여 정적 변수를 초기화하려고 합니다. 재미1() . 그러나 보시다시피 코드가 컴파일될 때 오류가 반환됩니다.

요약

정적 변수의 수명과 프로그램의 수명은 같습니다.

정적 변수가 초기화되지 않은 경우 기본값은 0입니다.

전역 정적 변수나 정적 함수는 정의된 프로그램 이외의 프로그램에서 액세스할 수 없습니다.