[C언어] 기억클래스

NANA·2023년 7월 24일
0

C

목록 보기
4/4

기억클래스

기억 클래스 (auto,static,register등) : 자료의 위치,유효 범위(scope),유효 기간(lifetime) 지정하는 역할

// 기억클래스 자료형 변수명;
auto int a;
static int b;
extern int c;
register int d;
자동변수(auto)
  • 함수 실행시 만들어지고 실행 끝나면 기억공간이 제거됨.
  • 예약어 auto. 생략 가능!!
  • 통용 범위는 변수가 선언된 블록/함수 내
  • 지역변수에 해당
  • 초기화 필요
정적변수
  • 기억영역이 프로그램 끝날 때까지 유지
  • 예약어 static
  • 전역변수
  • 변수의 값은 프로그램 실행 중 계속 유지
  • 초기화가 없으면 0으로 초기화 됨

외부변수

  • 함수의 외부에서 선언
  • 예약어 extern을 사용
  • 전역변수
  • 초기화가 없으면 0으로 초기화 됨
  • 다른 파일에서 외부변수로 선언된 변수의 값을 참조할 수 있다.

예1)

#include <stdio.h>
int i = 10;
int j = 20;
void main() {
	extern int i; // 외부 변수 선언(생략가능, 변수 i가 선언되면 선언된 위치 이하부터 그 값이 유효하기 때문)
    extern int k; // 외부 변수 선언(생략불가, 변구 k가 범위 바깥에 있으므로)
    
    int j = 100;
    print("i = %d j = %d k = %d", i, j, k);
}
int k = 50;

예2)
파일1

#include <stdio.h>
#pragma warning(disable:4996)
void extern_ex();	// extern_ex() 함수 원형 선언
char s[100];		// 전역변수 s선언
void main() {
	printf("문자열을 입력하세요:");
    scanf("%s", s);
    printf("입력 문자열은 %s는 전역변수 s에 저장\n", s);
    extern_ex();	// extern_ex() 함수 호출
}

파일2

#include <stdio.h>
extern char s[];	// 변수 s를 외부 변수로 선언
void extern_ex() {
	printf("외부변수 s값은 %s입니다. \n", s);	// 외부변수  s값을 출력
}

결과

문자열을 입력하세요 : 어쩌구
입력 문자열 어쩌구는 전역변수 s에 저장
외부변수 s값은 어쩌구입니다.

다른 파일에 있는 변수 값을 읽어오는게 가능하다는..!

레지스터변수

  • CPU 내의 레지스터에 자료를 저장하고자
  • 예약어 register
  • 자동 변수와 동일한 속성
  • 프로그램의 실행속도 증가를 목적으로 사용(주로 반복문에서 카운터 변수로 사용)
profile
일단 나만 알아보면 된다는 마음으로, 작더라도 꾸준히

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기