C 언어, 정적 키워드 및 예제의 역할

C 언어, 정적 키워드 및 예제의 역할

연구와 C 언어의 응용 프로그램에서, 같은 자동차, 휴식, 케이스, 문자, 많은 공통의 키워드가 발생합니다 const를 계속, 기본, 두 배의, 다른, 열거, 정적, 통근 등을. 그리고 그들은에서 코드의 다양한 기능 요구의 실현에 고유 한 역할을한다. 본 논문에서는 정적 키워드의 역할은 참고 목적만을위한 코드 예 형태에 나타내었다.
C를 포함하는 수정 된 정적 키워드 변수와 함수의 효과 :
1. 로컬 변수 수정
2. 전역 변수 수정
3. 수정 기능

1. 로컬 변수 수정

정적 로컬 변수를 수정 한 경우, 로컬 변수는 예를 들어,주기의 목적을 변경할 수

void test()
{
	static int a=1;   //statis改变局部变量的生命周期;变量没有被销毁时,不需要被再次定义;
	a++;
	printf("%d\n",a);
}//函数调用完之后会被销毁,所以每次打印的都是2;
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

실행 결과 :
2 2 2 2 2 2 2 2 2 2 (10 2)
때문에 수명이 길어진다 로컬 변수되도록 = 1 정적 지역 변수를 생성하기 위해 정적 INT, 여전히 마지막 값 이 파괴의 범위에 유지되어 있지 않은 경우, 사이클 시험 당 함수 호출 ()가, 최종 값이 범위 내에 유지되고, 더 이상 수행 정적 INT의 a = 1 개 인 코드 문, 즉 필요없이 가변를 재 초기화되지 .

글로벌 변수의 2. 수정

정적 로컬 변수는 전체 변형 할 때, 우리는 전역 변수에만 본질적 링크 속성을 변경하기 정의 된 소스 파일을 발견 할 수 있도록하는 것이, 전역 변수의 범위를 변경하는 목적을 달성 할 수있다. 예를 들어
다음 코드의 TEST.C 파일 :

extern int g_val;   //声明外部变量
int main()
{
	printf("%d\n",g_val);
	return 0;
}

add.c 파일에서 전역 변수를 정의합니다 :

//定义一个全局变量
static int g_val = 2020;

시운전 :

1>------ 已启动生成: 项目: test_lxl_3_15, 配置: Debug Win32 ------
1>  test.c
1>test.obj : error LNK2001: 无法解析的外部符号 _g_val
1>H:\2020C C++学习\ClassCode\test_lxl_3_15\Debug\test_lxl_3_15.exe : fatal error LNK1120: 1 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

에러 코드가 나타날 : 오류 LNK1120 정적 글로벌 변수는 전역 변수 g_val 올라서 범위를 변경하도록 수정된다에만 소스 파일 내에서 발견 될 수 기인 한 게르마늄되지 않은 외부 명령이다. 그러나 정적을 제거한 후, 프로그램은 정상적으로 실행됩니다.

3. 수정 기능

또한 키워드 정적 수정 2와 유사한 기능을하지만, 자연의 링크 속성을 변경하려면, 함수의 범위를 변경합니다.
예를 들어 :
TEST.C 파일에 :

extern int Add(int x, int y);
int main()
{
	int a = 8;
	int b = 9;
	int sum = Add(a,b);
	printf("sum=%d\n",sum);
	return 0;
}

add.c 수정 된 파일의 정적 함수를 정의합니다 :

//定义了一个静态修饰的函数
static int Add(int x,int y)
{
	int z = x + y;
	return z;
}

시운전 :

1>------ 已启动生成: 项目: test_lxl_3_15, 配置: Debug Win32 ------
1>  test.c
1>test.obj : error LNK2019: 无法解析的外部符号 _Add,该符号在函数 _main 中被引用
1>H:\2020C C++学习\ClassCode\test_lxl_3_15\Debug\test_lxl_3_15.exe : fatal error LNK1120: 1 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

링크 오류 범위가 작고, 추가 () 함수 만에 add.c에서 찾을 수있다, 정적 객체의 수정 범위를 변경도 인해 발생합니다.

C 언어 키워드 정적의 역할을 이해, 당신은 우리가 미래의 C 언어 학습과 애플리케이션에서 이러한 세부 사항 및 오류를 줄일 것을주의하도록 할 수 있습니다.

출시 세 원저 · 원 찬양 2 · 조회수 362

추천

출처blog.csdn.net/lxl700204/article/details/104878488