몽상실현개발주의

[따배씨] 12.5 자동 변수 본문

Language/C

[따배씨] 12.5 자동 변수

migrationArc 2021. 6. 13. 15:51

[따배씨] 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 이 변경
    • 이전의 변수 호출 불가
    • 함수가 끝나면 사용했던 메모리를 다른곳에서 사용 할 수 있도록 설계

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

Comments