일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- programmers
- Selenium
- 백준
- openCV
- 코딩테스트
- MySQL
- NumPy
- String Method
- python
- 데이터시각화
- 알고리즘스터디
- Join
- dataframe
- 노마드코딩
- queue
- pandas
- 선그래프
- Algorithm
- 파이썬
- Stack
- Matplotlib
- type hint
- 프로그래머스
- 가상환경
- 알고리즘 스터디
- 알고리즘
- javascript
- 자료구조
- 정보처리기사 c언어
- aws jupyter notebook
- Today
- Total
조금씩 꾸준히 완성을 향해
[C 언어] 변수의 종류와 유효범위 본문
변수 (variable)
• 데이터를 저장할 수 있는 메모리의 기억 공간
▶ 변수 생성 규칙 및 특징
- 예약어(키워드)는 사용 불가
- 공백을 포함 불가
- 첫 글자는 영문과 언더바(_)만 사용 가능
- 언더바(_) 이외의 특수문자는 사용 불가
- 대소문자를 구분
- ex) cds(o), break(x), _break(o), age30old(o), 40age(x), choi_dasol(x)
▶ 변수 Type
▶ 변수 선언
int age;
int age=40;
▶ 변수의 종류
- 지역 변수(local variable) , 전역 변수(global variable)
- 정적 변수(static variable), 동적 변수(dynamic variable)
º 지역 변수
- 함수/블록 안에서 선언하는 변수
- 함수/블록의 종료와 함께 메모리 상에서 소멸
- 초기값이 없으면 쓰레기 값이 들어감
- 스택 영역에 저장
#include <stdio.h>
int main(){
if(1){
int num1=10;
printf("%d", num1);
}
printf("%d", num1);
}
출력 결과 - ERROR
- if 절 안에서 선언된 변수는 if 절 밖에서 호출할 수 없다.
º 전역 변수
- 함수/블록 밖에서 선언하며 전체 함수에 영향을 미치는 변수
-프로그램이 종료될 때 메모리 상에서 소멸
- 데이터 영역에 저장됨
#include <stdio.h>
int num1;
void func(){
num1 = 20;
}
int main(){
num1 = 10;
printf("%d", num1);
func();
printf("%d", num1);
}
출력 결과 - 1020
º 정적 변수
- static으로 선언하며 선언된 블록 내에서만 사용가능
- 함수가 종료되어도 소멸되지 않고, 값이 그대로 유지
- 프로그램이 종료될 때 메모리 상에서 소멸
- 초기값이 없으면 0이 입력되고, 단 한번만 초기화
- 데이터 영역에 저장
#include <stdio.h>
void add(int i){
static int sum = 0;
sum = sum + i;
printf("sum: %d\n", sum);
}
int main(void){
add(10);
add(5);
add(3);
}
sum: 10
sum: 15
sum: 18
º 동적 변수
- 메모리 동적할당으로 생성되는 변수
- Run time 시간에 메모리를 할당
- 동적 기억장소에 할당하여 메모리 낭비를 피하려는 목적
- 무조건 포인터를 사용해야 함
- 힙 영역에 저장됨
※ 유튜브 흥달쌤 깨알 C언어 특강을 직접 정리한 내용입니다.
'기타 언어 > C 언어' 카테고리의 다른 글
[C 언어] 삼항 연산자 (0) | 2023.03.16 |
---|---|
[C 언어] 진법 변환, 비트 연산, 매크로 (0) | 2023.03.16 |
[C 언어] 출력 형식 (출력 변환 기호, 정수형 자리수, 실수형 자리수) (0) | 2023.03.16 |
[C 언어] 연산자(산술, 관계, 논리) & 연산자 우선순위 (0) | 2023.03.15 |
[C 언어] 컴파일(compile) 과정 (0) | 2023.03.15 |