-
반응형
특정 소스 파일에서만 전역변수 사용하기
전역 변수의 사용 범위를 변수가 선언된 소스파일로 제한
다른 소스 파일에서 extern 키워드로 참조 불가
같은 이름의 전역 변수를 다른 소스 파일에서 선언해도 오류 발생 안함
// 한 프로젝트 내에 2개의 c파일 존재한다고 가정// A.cint g_data1= 0;static int g_data2= 0;static int g_data3= 0;// B.cint g_data1; // A.c 파일에 같은 이름의 g_data1 전역변수가 있어 링크 오류 발생int g_data2; // A.c 파일의 g_data2 와 B.c 파일의 g_data2는 별개의 전역 변수가 됨extern int g_data3; // g_data3은 static으로 선언된 전역 변수라서 extern 참조할 수 없어서 에러 발생특정 함수에서만 전역 변수 사용하기
전역 변수를 특정 함수 안에서만 사용하도록 제한
static 키워드를 사용한 함수의 지역 변수들은 지역 변수의 특성을 가지지만, 생명 주기는 전역 변수와 동일
//지역 변수를 사용한 경우#include <stdio.h>void Test(){int data = 0;printf(“%d, ”, data++);}void main(){int i;for(i=0; i<5; I++) Test();// 지역 변수를 사용해서 출력 결과는 0,0,0,0,0, 이 됨}// static + 지역 변수를 사용한 경우#include <stdio.h>void Test(){static int data = 0; // Test 함수 안에서 사용가능한 전역변수printf(“%d, ”, data++);}void main(){int i;for(i=0; i<5; I++) Test();// 지역 변수를 사용해서 출력 결과는 0,1,2,3,4, 가 됨}const 키워드
const는 constant의 약자
변수를 상수처럼 값을 변경하지 않고 쓰고 싶을 때 사용
프로그래머의 실수 방지를 위한 문법(기계어 번역에서 큰 지장없는 문법임)
값을 변경하지 말아야 하는 변수를 변경하는 경우에 문법적으로 에러를 발생시킴
// GetArea 함수의 첫 번째 인자 pi값은 절대 변경하지 말 것double GetArea(const double pi, double radius, int limit){double result;pi = 3.14; // 사용자가 임의로 바꾸면 안되는 부분이므로 오류 발생시킴result = pi * radius * radius;return result;}반응형'C' 카테고리의 다른 글
함수가 필요한 이유 (0) 2022.05.02 소스파일 분리를 위한 extern 키워드 (0) 2022.05.01 지역변수와 전역변수 (0) 2022.04.30