?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


{
   int mount;
   auto int month;
}

{
   register int  miles;
}


#include <stdio.h>
 
/* function declaration */
void func(void);
 
static int count = 5; /* global variable */
 
main() {

   while(count--) {
      func();
   }

   return 0;
}

/* function definition */
void func( void ) {

   static int i = 5; /* local static variable */
   i++;

   printf("i is %d and count is %d\n", i, count);
}




First File: main.c

#include <stdio.h>
 
int count ;
extern void write_extern();
 
main() {

   count = 5;
   write_extern();
}

Second File: support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void) {
   printf("count is %d\n", count);
}



Storage Class의 종류들을 검색하여 작성하고 각각에 대한 설명하세요

  • ?
    FEDY 2016.10.18 16:44
    auto : 지역변수 선언. 일반적인 변수선언시 앞에 붙어있음(생략되어있지만)
    register : cpu의 메모리에 변수를 선언하는건데, 사실상 cpu가 주관하는거라 될지안될지 모름.
    extern : 외부에서도 참조 가능하게 하겠다는 뜻.
    static : 프로그램이 시작되면 메모리에 저장되고 프로그램이 끝나야 사라진다는 속성을 가짐. 단, 전역변수냐 지역변수냐에 따라 참조 가능 범위가 다름
  • profile
    시공이 2017.03.20 21:02

    auto = 지역변수, 변수 앞에 정의 (생략 가능), 변수 선언 부터 메모리 할당, 변수가 쓰여진 지역이 끝나면 메모리 반환, 초기화 되지 않음

    extern = 전역변수, 변수 앞에 정의, 프로그램 시작전 메모리 할당, 프로그램이 끝나면 메모리 반환, 0으로 초기화

    static = 정적변수, 변수 앞에 정의, 변수 선언 부터 메모리 할당, 프로그램이 끝나면 메모리 반환, 0으로 초기화

    register = 지역변수, 변수 앞에 정의, 해당 변수가 자주 사용되므로 가장 빠른 메모리에 할당을 컴파일에 요청 (안될수도 있음), 변수가 쓰여진 지역이 끝나면 메모리 반환, 초기화 되지 않음

  • profile
    Bae 2017.04.11 21:23
    auto = 지역변수 : 함수내부에서 사용되고 함수가 끝나면 변수 파괴.
    extern = 전역변수 : 프로그램 전체에서 사용되고 프로그램이 끝나면 변수 파괴.
    static = 정적변수 : 함수내부에서 사용되고 프로그램이 끝나면 변수 파괴.
    레지스터 = CPU관할 변수