C 언어에서 정적 사용(로컬 변수 수정, 전역 변수 수정, 함수 수정)

static 키워드는 세 가지 용도로 사용됩니다.

1. 정적 수정 지역 변수 - 정적 지역 변수

Static은 로컬 변수가 자체 범위를 벗어나더라도 소멸되지 않도록 할 수 있으며, 이는 기본적으로 로컬 변수의 수명 주기를 변경하지만 해당 범위는 여전히 로컬입니다.
좀 더 구체적으로 말하자면, 때때로 우리는 함수 호출이 끝난 후 함수의 지역 변수 값이 소멸되지 않고 원래 값을 계속 유지하기를 바랍니다. 출시된. 다음에 함수가 호출될 때 변수에는 이미 값(즉, 마지막 함수 호출이 끝날 때의 값)이 있습니다.
이때 지역 변수를 "정적 지역 변수"로 지정하고 static 키워드로 선언해야 합니다.
다음의 간단한 예를 통해 그 특성을 이해해 봅시다.

#include<stdio.h>
int fun(int a)
{
    
    
	int b = 0;
	static int c = 3;
	b = b + 1;
	c = c + 1;
	return (a + b + c);
}
int main()
{
    
    
	int a = 2, i;
	for (i = 0; i < 3; i++)
		printf("%d\n", fun(a));
	return 0;
}

연산 결과

7
8
9

fun 함수를 전후로 3번 호출하면 다음 표와 같이 b와 c의 값이 변한다
사진 설명을 추가해주세요
. 한 번 초기 값을 할당했으며 프로그램이 실행 중일 때 이미 초기 값을 가지고 있습니다. 앞으로는 함수가 호출될 때마다 초기값이 재할당되지 않고 마지막 함수 호출이 끝날 때의 값이 유지됩니다 . 자동 변수(b)에 대한 초기값의 할당은 컴파일 시점이 아닌 함수 호출 시점에 이루어지며, 함수가 호출될 때마다 초기값이 다시 할당된다. 대입문을 실행하는 것과 같습니다.

또한
지역 변수를 정의할 때 초기 값이 할당되지 않으면 정적 지역 변수의 경우 초기 값 0이 컴파일 타임 (숫자 변수의 경우) 에 자동으로 할당되거나 null 문자 ' \0' (문자 변수의 경우). 자동 변수의 경우 해당 값은 불확정 값입니다.

정적 지역 변수는 함수 호출이 끝난 후에도 여전히 존재하지만 다른 함수는 이를 참조할 수 없습니다 . 지역 변수이기 때문에 이 함수에서만 참조할 수 있고 다른 함수에서는 참조할 수 없습니다.

2. 정적 수정 전역 변수 - 정적 전역 변수

전역 변수 자체는 외부 연결 속성을 가지고 있습니다. 즉, 전역 변수의 범위는 전체 프로젝트이지만 전역 변수를 static 으로 수정하면 전역 변수는 외부 연결 속성을 잃고 내부 연결 속성이 되며, 즉, 자체 파일에서만 사용할 수 있으므로 정적 수정 전역 변수는 자체 .c 파일에서만 사용할 수 있습니다.
다음 예제를 살펴보겠습니다.
add.c와 test.c라는 두 개의 파일을 만들고 이 시점에서 프로젝트를 실행할 수 있습니다.
사진 설명을 추가해주세요
산출

2000년

그러나 전역 변수 g_val을 static으로 수정하면 오류가 보고됩니다. 다음과 같이:
사진 설명을 추가해주세요

3. 정적 수정 함수 - 정적 함수

기본적으로 함수에는 외부 링크 속성이 있지만 정적에 의해 수정된 후 함수는 외부 링크 속성을 잃고 내부 링크 속성이 됩니다. 따라서 static으로 수정한 함수는 해당 함수가 위치한 .c 파일 내에서만 사용할 수 있으며, 다른 파일에서는 사용할 수 없습니다 . 전역 변수의 정적 수정과 매우 유사합니다.
다음 예를 살펴보겠습니다.

사진 설명을 추가해주세요
함수 추가 전에 정적을 추가하면 오류가 보고됩니다.
여기에 이미지 설명 삽입

이상은 필자가 컴파일한 C 언어에서 static 키워드의 세 가지 용도입니다.
실수가 있으면 수정해주세요. 좋아요****팔로우
하고 제 성장을 지켜봐 주세요 ! 함께 배우고, 함께 발전하고, 어서!

사진 설명을 추가해주세요

Supongo que te gusta

Origin blog.csdn.net/m0_53558236/article/details/119490760
Recomendado
Clasificación