C++ 접근 수정자

2014.06.14 09:28

엘카 조회 수:824

참고 문서  
접근 수정자
  • auto 
  • register 
  • static 
  • extern 

auto 수정자
  - 지역 변수를 선언할 때 사용되는 수정자 
   - C언어의 전신인 B언어와의 호환성을 갖기 위해 제공되나  C언어에서는 함수 내부에서  
     변수를 선언할 경우 접근 수정자를 생략하면 기본적으로 지역 변수가 되기 때문에 거의  
     사용되지 않는다. 
auto int num; 



register 수정자
     - 변수를 메모리가 아닌 CPU의 register에 저장함을 의미한다. 
      - 변수를 메모리에 할당 받는 것 보다 더 빠른 접근과 연산속도를 보장받게 된다. 
      - CPU의 register 수는 제한적이므로 한꺼번에 많은 수의 변수를 register 로 선언할 수 없다.  
register int num; 

 

#include <stdio.h> 
void func1(void); 
int main(void) 
{     
   func1();    
   func1();    
   func1();    
   return 0; 
} 
void func1(void) 
{   
   int a=10;     /* 지역변수 선언 */ 
   static int b = 20;      /* 정적변수 선언 */   
   printf("a: %d, b= %d \n", a++, b++); 
} 

#include <stdio.h> 
void func1(void); 
void func2(void); 
static int a=10;   /* 외부 정적 변수 */ 
 
void main(void) 
{    
   func1();    
   func2();    
   printf("main() a: %d \n", a);  
} 
 
void func1(void) 
{    
   a++;    
   printf("func1() a: %d \n", a); 
} 

static 수정자 

static 수정자는 정적 변수를 선언할 때 사용한다. 

정적 변수는 데이터 세그먼트에 저장되며, 이는 이는 저장된 값이 해당 scope를 

    벗어나도 보존된다는 것을 의미한다. 



extern 수정자 

두 개 이상의 파일에서 이미 선언된 전역 변수를 바로 사용하자 할 때 사용. 

extern 선언은 변수를 위한 기억 장소를 새롭게 할당하는 것이 아니라, 특정 

    변수가 다른 곳에서 선언된 전역 변수라는 것을 컴파일러에게 알려주어 문법 

    오류가 발생하지 않도록 하는 선언문이다 

extern의 사용은 뒤에 오는 변수의 존재와 그 변수의 형을 컴파일러에게  

    알려주어 그 변수를 사용 가능하게 한다. 



시스템 헤더 파일과 사용자 정의 헤더 파일  

  <stdio.h>,    “ext.h”  // 헤더 파일 

#include <stdio.h> 
#define  PI  3.14159 

extern1.c  // extern 수정자 활용 예, 파일 1 

#include "ext.h" 
float func1(void); 
float func2(void); 
int r;  /* 전역변수 선언 */ 
 
int main(void) 
{     
   float result;     
   printf("반지름 ? ");    
   scanf("%d", &r);    
   result=func1();    
   printf("원의 면적 : %.2f \n", result);    
   result=func2();    
   printf("원의 둘레 : %.2f \n", result);     
   return 0; 
} 
float func1(void) 
{     
   return r*r*PI; 
} 

extern2.c  // extern 수정자 활용 예, 파일 2 

#include “ext.h” 
extern int r;  /* extern 수정자를 이용한 선언 */ 
 
float func2(void) 
{ 
   return r*2*PI; 
} 



번호 제목 날짜 조회 수
43 구조체 포인터 2014.06.15 931
42 구조체의 선언과 데이터 입·출력 2014.06.15 3084
41 함수 포인터 2014.06.15 447
40 배열과 포인터 2014.06.15 406
39 포인터 연산 2014.06.15 384
38 포인터 변수 2014.06.15 414
37 데이터 정렬 2014.06.15 424
36 배열 초기화 2014.06.14 630
35 2차원 배열 2014.06.14 670
34 문자열 처리 함수 2014.06.14 412
33 문자열 입출력 함수 2014.06.14 442
» 접근 수정자 2014.06.14 824
31 전역 변수 2014.06.14 308
30 지역 변수(local variable) 2014.06.14 295
29 변수와 메모리 저장 위치 2014.06.14 428
28 비트 연산자 2014.06.14 288
27 관계 연산자와 논리 연산자 2014.06.14 472
26 증감 연산자 2014.06.14 319
25 printf() 함수의 형식 지정자 2014.06.14 7522
24 열거 형 변수의 이해 2014.06.14 465