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
- udemy
- sorting
- Math
- BFS
- String
- C
- php
- BASIC
- dfs
- C언어
- 정수론
- web
- BOJ
- Python
- greedy
- Algospot
- 따라하며 배우는 C언어
- programmers
- 인프런
- 생활코딩
- Cleancode
- 백준
- 따배씨
- graph
- server
- 따라하면서 배우는 C언어
- DP
- 종만북
- Algorithm
- JavaScript
Archives
- Today
- Total
몽상실현개발주의
[따배씨] 12.5 자동 변수 본문
따배씨 - 따라하며 배우는 C언어
12강 Storage Classes, Linkage and Memory Management
12.5 자동 변수 Automatic Variables
#include <stdio.h>
/*
Automatic storage class
- Automatic storage duration, block scope, no linkage
- Any variable declared in a block or function header
*/
int main(){
auto int a; // Keyworld auto : a storage-class specifier
a = 1024;
//printf("%d\",a);
//auto int b = a * 3;
return 0;
}
auto int a;
a = 1024; // 초기화를 꼭 해주어야 함
- auto 를 붙이지 않고 선언해도 자동 변수
- 자동 변수는 stack 메모리 공간에서 빈번하게 사용 되기 때문에, 매번 Compiler 가 0으로 초기화를 해주기에는 비효율적
- C 언어 표준에서는 초기화를 해주지 않음
#include <stdio.h>
/*
Automatic storage class
- Automatic storage duration, block scope, no linkage
- Any variable declared in a block or function header
*/
void func(int k);
int main(){
int i = 1;
int j = 2;
printf("i %lld\n", (long long)&i);
// i 140732920755320
{
int i = 3; // name hiding
printf("i %lld\n", (long long)&i);
// i 140732920755312
// j is visible here
printf("j = %d\n", j);
// j = 2
int ii = 123;
}
// ii is not visiable here
printf("i %lld\n", (long long)&i);
// i 140732920755320
for (int m = 1; m < 2; m++)
printf("m %lld\n", (long long)&m);
// m 140732920755304
func(5);
// i 140732920755256
for (int m = 3; m < 4; m++){
printf("m %lld\n", (long long)&m);
// m 140732920755300
}
return 0;
}
void func(int k){
int i = k * 2;
printf("i %lld\n", (long long)&i);
}
func(5);
- function 이 호출 되면 stack frame 이 변경
- 이전의 변수 호출 불가
- 함수가 끝나면 사용했던 메모리를 다른곳에서 사용 할 수 있도록 설계
이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.
'Language > C' 카테고리의 다른 글
[따배씨] 12.7 블록 영역의 정적 변수 Static (0) | 2021.06.13 |
---|---|
[따배씨] 12.6 레지스터 변수 (0) | 2021.06.13 |
[따배씨] 12.4 저장 공간의 다섯 가지 분류 (0) | 2021.06.13 |
[따배씨] 12.3 변수의 영역과 연결 상태, 객체의 지속 기간 (0) | 2021.06.13 |
[따배씨] 12.2 객체와 식별자, L-value 와 R-value (0) | 2021.06.13 |
Comments