λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
C++ 기초

[C/C++] 1. λ³€μˆ˜(Variable)

by μ„œμ•„λž‘πŸ˜ 2021. 3. 10.

ν•™μ°½μ‹œμ ˆ λ°°μ› λ˜ ν•¨μˆ˜μ—μ„œμ˜ x

 

λ³€μˆ˜λΌλŠ” 이름은 "λ³€ν•  수 μžˆλŠ” 수"라고 생각 ν•  수 있으며, μƒμˆ˜(λ³€ν•˜μ§€ μ•ŠλŠ” 수)와 λŒ€λΉ„λ˜λŠ” κ°œλ…μ΄λ‹€.

 

μš°λ¦¬κ°€ ν•™μƒμ‹œμ ˆμ— λ°°μ› λ˜ ν•¨μˆ˜(f(x))μ—μ„œμ˜ x에 μ—¬λŸ¬κ°€μ§€ 값을 λŒ€μž…ν•΄ λ³Ό 수 μžˆλŠ”λ°, 이와 λ§ˆμ°¬κ°€μ§€λΌκ³  ν•  수 μžˆλ‹€.

 

int foo;
foo = 5;

μœ„μ˜ μ½”λ“œμ—μ„œ fooκ°€ λ³€μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 이름이닀.

 

 

μ»΄ν“¨ν„°μ˜ λ©”λͺ¨λ¦¬ κ΄€μ μ—μ„œ 보면, λ³€μˆ˜ fooλŠ” int의 크기(4byte)만큼 λ©”λͺ¨λ¦¬ 곡간을 μ°¨μ§€ν•˜κ³  이름은 foo라고 λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” 것이닀. λ‹€λ§Œ, fooκ°€ λ©”λͺ¨λ¦¬ μžμ²΄μ΄κ±°λ‚˜ κ°’ 5라고 ν•˜κΈ° λ³΄λ‹€λŠ” μ°¨μ§€ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 이름이고, κ·Έ 곡간에 5의 값을 λŒ€μž…ν–ˆλ‹€κ³  ν•  수 μžˆλ‹€.

 

 

 

 

C/C++μ—μ„œμ˜ λ³€μˆ˜λŠ” 기쀀에 따라 μ—¬λŸ¬ λΆ„λ₯˜λ‘œ λ‚˜λ‰  수 μžˆλ‹€.

 

λ¨Όμ € λ³€μˆ˜μ˜ μ‚¬μš© λ²”μœ„μ— λ”°λΌμ„œ,

  • 지역 λ³€μˆ˜
  • μ „μ—­ λ³€μˆ˜
  • 멀버 λ³€μˆ˜

둜 λ‚˜λ‰  수 μžˆλ‹€.

 

지역 λ³€μˆ˜λŠ” scope, 즉 {} 내뢀에 μœ„μΉ˜ν•œ λ³€μˆ˜μ΄λ©°, scopeλ₯Ό λΉ μ Έλ‚˜κ°€λŠ” μˆœκ°„ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λŠ” ν•΄μ œλ˜μ–΄ μ ‘κ·Όν•  수 μ—†λ‹€.

μ „μ—­ λ³€μˆ˜λŠ” scope 외뢀에 μœ„μΉ˜ν•œ λ³€μˆ˜μ΄λ©°, μ„ μ–Έλœ μ‹œμ λΆ€ν„° ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜λŠ” μˆœκ°„κΉŒμ§€ λ©”λͺ¨λ¦¬κ°€ μœ μ§€λ˜μ–΄ μ ‘κ·Ό κ°€λŠ₯ν•˜λ‹€.

멀버 λ³€μˆ˜λŠ” 클래슀의 내뢀에 μœ„μΉ˜ν•œ λ³€μˆ˜μ΄λ―€λ‘œ, μΈμŠ€ν„΄μŠ€λ₯Ό ν†΅ν•˜κ±°λ‚˜ 클래슀 자체λ₯Ό ν†΅ν•΄μ„œ μ ‘κ·Όν•  수 μžˆλ‹€.

 

int global;	// μ „μ—­λ³€μˆ˜

void func()
{
	int local = 10; // μ§€μ—­λ³€μˆ˜
}

class abc
{
public:
	abc();
	~abc();
    
private:
	int member; // 멀버 λ³€μˆ˜
};

 

λ³€μˆ˜ μ΄ˆκΈ°ν™”(Initialize)

int a; 와 같이 λ³€μˆ˜λ₯Ό μ„ μ–Έλ§Œ ν–ˆμ„ λ•Œ a의 값은 λ¬΄μ˜λ―Έν•œ μ“°λ ˆκΈ°κ°’μ΄ λ“€μ–΄μžˆλ‹€. λ”°λΌμ„œ μ΄ˆκΈ°ν™”λ₯Ό ν•΄μ£Όμ–΄μ•Ό ν•˜λŠ”λ° μ΄ˆκΈ°ν™”μ˜ 방법은 ν• λ‹Ήκ³Ό μ„ μ–Έλœ μ¦‰μ‹œ μ΄ˆκΈ°ν™”κ°€ μžˆλ‹€.

 

int x;
x = 3; // ν• λ‹Ή

int x = 3; // μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”

 

ν›„μžκ°€ 더 κΉ”λ”ν•˜κ³ , 자주 쓰인닀.

 

 

 

L-Value와 R-Value

double dVal = 3.14;

 

λŒ€μž… μ—°μ‚°μžλ₯Ό κΈ°μ€€μœΌλ‘œ 보톡 μ™Όμͺ½μ— μœ„μΉ˜ν•˜λ©΄μ„œ, λ©”λͺ¨λ¦¬λ₯Ό 가진 값을 L-Value라고 ν•œλ‹€. μœ„ μ½”λ“œμ—μ„œλŠ” dVal λ³€μˆ˜κ°€ L-Value이닀.

 

R-ValueλŠ” λŒ€μž… μ—°μ‚°μžλ₯Ό κΈ°μ€€μœΌλ‘œ 보톡 였λ₯Έμͺ½μ— μœ„μΉ˜ν•˜λ©΄μ„œ, λ©”λͺ¨λ¦¬λ₯Ό 가지지 μ•ŠλŠ” 값은 R-Value라고 ν•œλ‹€. μœ„ μ½”λ“œμ—μ„œλŠ” 3.14κ°€ R-Value이닀.

 

L-ValueλŠ” 식이 λλ‚˜λ„ λ©”λͺ¨λ¦¬κ°€ μœ μ§€λ˜μ§€λ§Œ, R-ValueλŠ” λ©”λͺ¨λ¦¬μ™€ κ΄€λ ¨μ—†λŠ” μΌμ‹œμ μΈ 값이라고 ν•  수 μžˆλ‹€.

 

int a = b;

 

λ¬Όλ‘  μ‹μ˜ μ’Œμš°κ°€ λͺ¨λ‘ L-Value일 μˆ˜λ„ μžˆλ‹€. κΈ°μ–΅ν•΄μ•Ό ν•  것은 λ©”λͺ¨λ¦¬λ₯Ό 가진 값은 L-Value이고 가지지 μ•ŠλŠ” 값은 R-Value인 것이닀.

 

 

// 좔후에 R-Value Referenceκ°€ λ‚˜μ˜€λŠ”λ°, R-Value의 κ°œλ…μ΄ 흔듀릴 μˆ˜λ„ μžˆλ‹€~~

λŒ“κΈ€