C++프로그래밍

2013.05.09_스택영역 발담기!_리다이렉션!_

성엽이 2013. 5. 9. 22:18

 ▶ 스택영역 발담기!

 

 

 auto , register 클래스 : 지역변수로 존재

 static, extern 클래스 : 전역변수로 존재

 

 

#include < stdio.h >

void test();

int main()
{
test();
test();
test();
test();
test();

return 0;
}

void test()
{
static int A = 100; // static 은 함수가 종료되도 값이 그대로 남아있음.
int B = 100;        // static 은 프로그램이 실행될때 딱 한번 호출된다.

++A;
++B;

printf("A = %d\n" , A);
printf("B = %d\n\n" , B);

printf("A의주소 = %08X\n" , &A);
printf("B의주소 = %08X\n\n" , &B);
}

 

 

 void test() 함수에서 함수가 이미 종료되었음에도 static(전역변수)에 의해서 값이 남아서 101에서 105까지 출력되고,

 주소도 B 의 경우는 일반 지역변수 선언으로 B 값 이 메모리의 5가지 영역중 Stack 영역에 저장 이 되지만

 전역변수의 A 값 같은 경우는 Data 영역에 저장 이 된다.

 

 

 ▶ 실행화면에서 A값 101을 못찍었네!?..


※ 리다이렉션

 tree > a.txt 하면 현재 창에 파일들을 띄워줘서 '>' 리다이렉션을 통해 방향을 바꿔 a.txt에 넣어준다.

 > : 파일저장을 현재창에 있는 것만 저장함. 

 추가 : type 파일명 ( 문서내용이 보임 )

          tree | more 파일량이 많아서 보기 힘들때 스페이스바를 누를때 한단위씩 띄워서 볼수있다.

          >> 파일저장되어있는것에 추가하여 저장.

         type a.txt > b.c : a.txt 에 있는 내용을 b.c 에 복사

         copy con a.txt  : 메모장이 없을시에 도스창에 소스를 쳐서 저장가능