본문으로 바로가기

[D+13] C언어 기초 (6)

category 해킹&보안/C언어 2017. 2. 23. 23:21
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

2. C언어 기초


5) 변수


▣ 스택 & 데이터 영역

- 스택영역 : 프로그램이 진행되면서 필요한 임시값들 및 지역 변수

- 데이터영역 : 전역 변수 및 문자열


스택프레임

- 한 함수당 스택프레임은 하나씩 존재

- 함수가 실행될 때 제일 먼저 자기 함수가 사용할 스택프레임을 확보.

- 함수 안의 지역변수들을 정리함.

- 스택프레임을 관리하기 위해 나온 자료구조 = 스택

☞ 스택은 제일 먼저 넣은 애가 제일 나중에 나옴.

☞ 프링글스처럼 제일 밑에 차곡차곡 쌓고 그 위에부터 나올 수 있음.


▣ 지역 변수

- 함수 내부에서 정의되어 해당 함수 내부에서만 사용가능

- 사용될 당시에 스택영역에 공간할당 (선언할 때 공간할당됨)

- 함수가 종료되면 지역변수 공간도 같이 사라짐. (스택프레임이 해제됨)

- 초기화하지않으면 쓰레기값이 들어감.


▣ 전역 변수

- 함수 외부에서 선언되어 어떤 함수에서든 사용 가능

- 컴파일시 기억장소가 할당되어 프로그램 실행부터 종료시까지 데이터 영역에 할당.

- 자동으로 초기화됨.



#include <stdio.h>

int global = 10;

int FuncA()
{
	int x = 0;
	int y = 1;

	return x + y + global;
}

int main()
{
	int a = 0;
	a = FuncA();
	global += a;

	printf("Global : %d\n", global);

	printf("x : %d\n", x);

	return 0;
}


- 위의 예제는 돌아가지 않음.

- main 함수에서 FuncA함수의 지역변수인 x를 사용할 수 없기 때문!







i2sec 대구지점 23기 수료생.

'해킹&보안 > C언어' 카테고리의 다른 글

[D+15] 파일 입출력 (1)  (0) 2017.02.27
[D+14] C언어 기초 (7)  (0) 2017.02.26
[D+12] C언어 기초 (5)  (0) 2017.02.22
[D+10] C언어 기초 (4)  (0) 2017.02.20
[D+9] C언어 기초 (3)  (0) 2017.02.17