변수는 선언되는 위치에 따라서 크게 『전역변수』 와 『지역변수』 로 나뉜다.
두 변수의 차이점은 메모리상에 존재하는 기간, 변수에 접근할 수 있는 범위
지역 변수
중괄호{} 내에 선언되는 변수는 모두 지역변수다.
즉, 선언된 지역 내에서만 유효
[예제 코드]
지역변수는 선언된 지역 내에서만 유효하기 때문에
선언된 지역이 다르면 이름이 같아도 문제가 되지 않는다.
#include <stdio.h>
int SimpleFunc(void) {
int num = 10;
num++;
printf("num = %d\n", num);
return 0;
}
void main() {
int num = 5;
SimpleFunc();
printf("num = %d\n", num);
}
함수{ } 내부에 선언된 변수를 초기화 하지 않고 접근시 C4700 Error 발생
#include <stdio.h>
int main(void) {
int value;
printf("%d\n", value);
system("pause");
return 0;
}
기본형 매개변수도 지역변수의 일종이다.
- 선언된 함수 내에서만 접근이 가능
- 선언된 함수가 반환을 하면, 지역변수와 마찬가지로 소멸
#include <stdio.h>
int SimpleFunc(int val) {
val++;
printf("val = %d\n", val);
return 0;
}
void main() {
int num = 5;
SimpleFunc(num);
printf("num = %d\n", num);
}
매개변수 형태를 위의 결과를 전역변수, 포인터 등을 이용해서 결과를 다르게 할 수 있다.
전역 변수
- 전역 변수의 경우에는 선언만 해주어도 기본값이 들어갑니다
- 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재.
- 프로그램 전체 영역 어디서든 접근이 가능하다.
- 만약 전역변수와 지역변수의 이름이 같다면 지역변수를 우선시 한다.
- 전역변수를 남용해서는 안됩니다.
기존 전역변수 값을 변경하면 참조하고 있는 다른 함수의 코드내용도 변경될 수 있기에 구조가 복잡해질 수 있음
#include <stdio.h>
int value;
int main(void) {
printf("%d\n", value);
system("pause");
return 0;
}
C언어 변수 형태와 입출력
- int (%d) ← 4 byte
- long long (&lld) ← 8 byte
- double (입력 시 %lf, 출력 시 %f) ← 8 byte
입력 받을 때는 특정 주소에 특정 크기만큼 입력해야 하므로 %lf
출력할 때는 주소가 아닌 값 자체를 이용하므로 상세 크기 입력 불필요 %f
- float (%f) ← 4 byte
- string (%s) ← 제한 없음
- char (%c) ← 1 byte
- bool
'프로그래밍 언어 > C 언어' 카테고리의 다른 글
[C] 함수의 선언 (0) | 2021.03.19 |
---|---|
[C] 문자열 관련 함수 (0) | 2021.03.19 |
[C] static 변수 (0) | 2021.03.19 |
[C] 구조체 (structure) (0) | 2021.03.19 |
[C] 조건문 (Switch문 예제) (0) | 2021.03.19 |
댓글