상세 컨텐츠

본문 제목

변수

C / C++/키워드

by 부레두 2022. 12. 14. 22:51

본문

변수

  • 데이터(data)를 저장하기 위해 프로그램에 의해 "이름을 할당받은 메모리 공간"
  • 이 공간에 저장된 값은 변경이 가능
  • 정수형, 실수형, 사용자 정의형, 다양한 형태가 존재
  • 변수의 이름 생성에는 규칙이 존재
  • '선언'과 '할당'의 과정을 거친 변수는 주소를 받아 메모리 구조상 저장됨

 int x (선언) = 5 (할당); " = 메모리 주소 ???에 int 자료형 5의 값을 저장해라

 

* 비고 *

  • 0이 아닌 초기화가 되어있으면, 즉 할당 되어 있다면 .data 영역
  • 초기값이 0 이거나 초기값이 없으면, 즉 할당 되지 않으면 .bss 영역

지역 변수, 전역 변수, 동적 변수

  • 지역 변수 (Local Variable)
    • 함수, 블록 안에서 선언, 사용 되는 변수, 외부에서는 사용 불가
    • 함수, 블록의 종료와 함께 메모리상에서 소멸
    • 초기값이 없으면 쓰레기값이 저장
    • 스택 영역에 저장
  • 전역 변수 (Global variable)
    • 함수 블록 밖에서 선언, 전체 함수에 영향
    • 프로그램이 종료될 때 메모리에서 소멸
    • 초기값이 없으면 0으로 저장
    • 데이터 영역에 저장
  • 동적 변수
    • 메모리 동적할당으로 생성되는 변수
    • RunTime에 메모리를 할당
    • 포인터를 사용
    • 힙 영역에 저장

L-Value 와 R-Value

  • C 표준 으로 대입 연산자(=)의 왼쪽을 L-Value, 오른쪽을 R-Value
  • C++ 에서는 모든 표현식은 Lvalue, Rvalue
  • L-Value : 메모리상에서 지속적인 주소(위치)를 가진 값
    -> 단일 표현식 이후 없어지지 않고 지속되는 객체
    -> const 타입을 포함한 변수들은 주소를 가지고 있으니 모두 L-Vlaue
  • R-Value : 표현식이 종료된 이후 더이상 존재하지 않는 임시적인 값
    -> 지속적인 메모리 주소와 관련이 없는 값
    -> x에 3이 있을때, 5 와 x + 2는 같은 값으로 평가됨

** 비고

  • (++x), (x++) 의 차이
    => ++x는 증가된 x 자신을 리턴하기 때문에 Lvalue
    => x++은 증가된 복사본을 리턴하기 때문에 Rvalue

'C / C++ > 키워드' 카테고리의 다른 글

Inline 키워드  (1) 2023.10.12
Static 키워드  (1) 2023.10.12
메모리 구조  (0) 2022.12.28
상속과 다향성  (0) 2022.07.01
생성자 소멸자  (0) 2022.07.01

관련글 더보기