728x90
반응형
오늘은 함수와 변수의 관계에 대해 공부를 해볼 것이다.
먼저 전역변수와 지역변수에 대해 알아보도록 하자
변수의 속성으로는 이름, 타입, 크기, 값 + 범위, 생존 시간, 연결 등이 있다.
범위(scope): 변수가 사용 가능한 범위, 가시성
생존 시간(lifetime): 메모리에 존재하는 시간
연결(likage): 다른 영역에 있는 변수와의 연결 상태
즉, 모든 변수는 어느 부분에서 생성되어(생성) 어떠한 범위까지 변수가 존재하다가(생존시간)
그 범위를 벗어나면 삭제된다.
위와 같이 변수의 범위에 따라 전역변수와 지역변수로 나뉜다.
전역변수는 프로그램이 실행될 때 생성되며 종료될 때 삭제된다.
반면에 지역변수는 {}(블록)이 시작될 때 생성되며 {}(블록)이 끝날 때 삭제된다.
아래는 지역 변수에 대한 예제이다
#include<stdio.h>
int main(){
int i;
for(i = 0; i < 5; i++){
int temp = 1;
printf("temp = %d\n", temp);
temp++;
}
return 0;
}
temp++로 인해 tmep 값이 1씩 +되서 출력되어야 하지만
for문이라는 블록 안에 temp가 있기 때문에
반복할 때마다 생성삭제가 되서 값이 1로 고정이 된다.
함수의 매개변수 또한 지역변수의 일종이다.
아래는 전역변수에 대한 예제이다.
#include<stdio.h>
int A; // 전역변수 초기값은 0
int B;
int add()
{
return A + B;
}
int main()
{
int answer;
A = 5; // 전역변수는 변수 선언 안해도 됨
B = 7;
answer = add(); // 5 + 7
printf(“%d + %d = %d\n”, A, B, answer);
return 0;
}
A와 B는 전역변수로 선언하면서
이 소스파일이 실행되는 동안 생존해 있기 때문에
main함수 안에서 변수 선언을 하지 않아도
A와 B 변수를 사용할 수 있다.
728x90
반응형
'~2023' 카테고리의 다른 글
[MySQL] MySQL 설치 파일 받기 (0) | 2020.12.17 |
---|---|
[ANDROID] JAVA 파일로 XML처럼 활용해 View 만들기 (0) | 2020.12.16 |
[JAVA] 백준 9251번 문제, LCS (최장 공통 부분 수열) (0) | 2020.08.10 |
[JAVA] 백준 9660번 문제, 돌 게임 6 (0) | 2020.08.10 |
[JAVA] 백준 9659번 문제, 돌 게임 5 (0) | 2020.08.10 |