Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 도커 #Docker #배포 #Spring #MySQL #백엔드배포
- chatgpt #gpt #챗지피티 #ai
- 도커 #docker #docker-compose.yml #도커컴포즈 #배포 #spring #mysql #docker-compose
- /
Archives
- Today
- Total
개발자 데뷔!
[C/C++ 1.4] static 변수 본문
*지역변수(local)
- 선언된 함수 내에서만 접근 가능
- 해당 함수 return 하면 소멸
* 전역변수(global)
- 후략???????
지역변수의 static 선언)
- 선언된 함수 내에서만 접근 가능 (local)
- 항상 메모리공간에 존재 - 해당 함수 return 되도 소멸하지 않음 (global)
- 초기화하지 않으면 0으로 초기화됨 (global)
- 프로그램 시작과 동시에 할당&초기화_초기화는 오직 1회만됨 (global)
[함수 호출 시 선언되는 것이 아님!!** 특정 함수 안에 쓰여있더라도(밑의예시처럼)
이는 그저 접근범위를 제한하기 위함]
- 프로그램 종료될 때까지 메모리 공간에 고정 (global)
ex)
#include <stdio.h>
void func(void){
static int num1 = 0; //if 초기화하지 않으면 값 0 (전역변수 특징) ***
int num2 = 0; //if 초기화하지 않으면 쓰레기값 (지역변수 특징)
num1++, num2++;
printf("static: %d, local: %d\n", num1, num2);
}
/*for test*/
int main(void) {
int i;
for (i = 0; i < 5; i++)
func();
return 0;
}
결과화면)
같은 function이 반복되어도,
local변수는 매 회 함수가 반환하며 초기화되어 매번 1을 출력하지만,
static은 값이 메모리공간에 고정 되어 매 회 1이 더해진다.
즉, 위 func함수에서
static int num1=0;
부분은 존재하지 않는 것 처럼 간주하면 된다.
* 전역변수 대신 사용하면 안정성↑
* 단, 변수에 접근하는 영역이 단 하나의 함수 일 때만 가능
'프로그래밍 언어 > C' 카테고리의 다른 글
[C/C++ 1.8] 연산자 sizeof (0) | 2022.03.10 |
---|---|
[C/C++ 1.5] Register 변수 (0) | 2022.03.10 |
[C/C++ 1.3] 변수선언&초기화 (0) | 2022.03.10 |
[C/C++ 0.1] C 컴파일방법 & 표준입출력 (0) | 2021.07.15 |
[C/C++ 0.0] C의 시작 (0) | 2021.07.11 |