일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- classification problem
- Andrew Ng
- 홍정모님
- decimal
- 학습 알고리즘
- C++
- 이코테
- coursera
- 나동빈님
- 형변환
- 기계학습
- Machine Learning
- 프로그래밍
- standford University
- 코드블럭 오류
- algorithm
- Runtime constants
- Greedy
- const
- #define
- regression problem
- 코딩테스트
- sizeof()
- 연산자
- 본즈앤올
- 단항연산자
- compile time constants
- CLion
- #endif
- 기계학습 기초
- Today
- Total
wellcome_공부일기
01.06. C++ | 식별자의 범위(Scope of an Identifier) 본문
<목차>
1. 식별자의 범위(Scope of an Identifier)란?
2. 지역 변수(Local Variable)과 전역 변수(Global Variable)차이
3. 지역 범위를 이용할 때, 데이터 타입(Data Types)을 안 붙이는 예
식별자의 범위(Scope of an Identifier)란?
식별자 범위란 프로그램 내에서 어디서 식별자가 접근가능한지 나타내는 것을 말합니다.
지역 식별자(Local Identifier)란 함수 혹은 블럭 내에 선언된 식별자를 말합니다.
전역 식별자(Global Identifier)란 모든 함수 선언 밖에 선언된 식별자를 말합니다.
주의 할 점은 C++이 한 함수 내에 다른 함수를 품지 못한다는 것입니다. 하지만 함수가 아닌 블럭은 품을 수 있습니다.
#include <iostream>
using namespace std;
int main()
{
int x = 0;
cout << x << ", " << &x << endl; //0, 0x7ffeeea83968
{
int x = 1;
cout << x << ", " << &x << endl; //1, 0x7ffeeea83964
}
{
int x = 2;
cout << x << ", " << &x << endl; //2, 0x7ffeeea83960
}
cout << x << ", " << &x << endl; //0, 0x7ffeeea83968
return 0;
}
- ' { } '로 지역 범위를 설정할 수 있습니다. 중괄호로 설정한 범위를 블럭(block)이라고 부릅니다.
- 지역 변수는 해당 지역 범위를 벗어나면 사용할 수 없게 됩니다.
- 지역 변수가 차지하고 있던 메모리는 그 지역 영역을 벗어날 때, 스택(stack) 원리로 메모리가 반납됩니다.
- 반납된 메모리는 다음 지역 변수가 사용할 수 있도록 대기합니다.
지역 변수(Local Variable)과 전역 변수(Global Variable) 차이
앞서 말했듯, 전역 변수(Global Variable)는 모든 함수의 밖에서 선언이 되고 지역 변수(Local Variable)는 함수 혹은 블럭(block)내에 선언이 됩니다. 아래 코드는 지역 변수(Local Variable)과 전역 변수(Global Variable) 차이에 관한 내용입니다.
#include <iostream>
using namespace std;
int x = 100; //Global Variable
int main()
{
{
int x = 200; //Local Variable
cout << x << endl; // print Local variable
}
cout << x << endl; //print global variable
return 0;
}
지역 범위를 이용할 때, 데이터 타입(Data Types)을 안 붙이는 예
지역 범위 사용 시, 같은 변수에 대입(assignment)만 진행한다면, 변수의 값만 바뀌고 주소는 같은 걸 확인 할 수 있습니다.
데이터 타입(Data Types)을 선언하지 않으면, 지역 범위를 설정했더라도 같은 주소에 변수의 값만 바뀌었다고 인식하기 때문입니다.
#include <iostream> //cout cin, endl
using namespace std;
int main()
{
int x = 0;
cout << x << ", " << &x << endl; //0, 0x7ffee9848968
{
x = 1;
cout << x << ", " << &x << endl; //1, 0x7ffee9848968
}
{
int x = 2;
cout << x << ", " << &x << endl; //2, 0x7ffeeea83960
}
cout << x << ", " << &x << endl; //1, 0x7ffee9848968
return 0;
}
지역 범위 연습문제 입니다.
output을 추측하고 코드를 돌려봅시다. ٩꒰。•◡•。꒱۶
#include <iostream>
using namespace std;
void doSomething(int x)
{
x =123;
cout << x << endl;
}
int main()
{
int x =0;
cout << x << endl;
doSomething(x);
cout << x << endl;
return 0;
}
'프로그래밍 > C++' 카테고리의 다른 글
01.08. C++ | 프로그래밍에서 지켜야 할 기본적 서식(Formatting) (0) | 2020.04.25 |
---|---|
01.07. C++ | 피연산자(Operand) 갯수에 따른 연산자(Operator)의 3가지 종류 (0) | 2020.04.24 |
01.05. C++ | 함수 및 변수 이름 짓는 규칙, 키워드와 식별자 차이 (0) | 2020.04.22 |
01.04. C++ | 함수의 구조, 인자와 인수 차이점 (0) | 2020.04.21 |
01.03. C++ | 입출력 살펴보기 (0) | 2020.04.20 |