독개

#따배씨 1.7 지역 범위 (Local Scope)

by #독개#

 

 

어떤 범위라고 하면 { } 중괄호를 의미한다

 

중괄호 내부 변수는 중괄호를 넘어가면 사라진다

 

인스턴스(메모리공간에 실제로 자기 공간을 가지는것)

 

지역 변수는 영역을 벗어나면 사용할 수 없게 됩니다

지역 변수가 차지하고 있던 메모리는 그 지역 변수가

영역을 벗어날때 '스택(stack)' 메모리로 반납됩니다.

반납된 메모리는 다음 지역 변수가 사용할 수 있도록 대기합니다.

'스택과 힙'에서 더 자세히 다룰예정

 

중요한개념

 

중요한 개념인데 실습을 통해 알아보자

 

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
	{
		
		int x = 0; //int x(0); 이것과 같다 알고있자
		cout << x << " " << &x << endl;
		// int x = 1; //이건 문제가된다 그이유는 식별자 x가 두개기 때문이다
		
		//하지만 아래 것들은 문제가 안된다 중괄호 때문 중괄호가 생기면 이 변수는 다른 메모리공간의 식별자이다
		{
			int x = 1;
			cout << x << " " << &x << endl;
		}

		{
			int x = 2;
			cout << x << " " << &x << endl;
		}
		
		cout << x << " " << &x << endl;
		return 0;
		
	}

 

1.결과

 

 

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
	{
		
		int x = 0; //int x(0); 이것과 같다 알고있자
		cout << x << " " << &x << endl;
		// int x = 1; //이건 문제가된다 그이유는 식별자 x가 두개기 때문이다
		
		//하지만 아래 것들은 문제가 안된다 중괄호 때문 중괄호가 생기면 이 변수는 다른 메모리공간의 식별자이다
		{
			int x = 1;
			cout << x << " " << &x << endl;
		}

		{
			x = 5;
			// int x = 2;
			cout << x << " " << &x << endl;
		}

		cout << x << " " << &x << endl;
		return 0;
		
	}

2.결과

 

 

추론 해보기

 

#include <iostream>
using namespace std;

	int main()
	{
		int x = 0;
		cout << x << endl;
		doSomething(x);
		cout << x << endl;
		return 0;
	}

	void doSomething(int x)
	{
		x = 123;
		cout << x << endl;
	}

결과

 

 

중요개념

 

int sum(int t)

{

   return 0;

}

 

int main()

{

   int x = 0;

   sum(3); //여기서 이렇게 호출을하면 실제 함수에선

}

-----------------------------------------------------------------------------

int sum(int t)

{

   int t = 3;

   return 0;

}

 

int t는 함수내에 { }에서만 존재하는 변수이다

 


🐱‍👓독하게 개발

블로그의 정보

독한 개발자

#독개#

활동하기