Notice
Recent Posts
Recent Comments
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

SYDev

C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(1) 본문

Programming Lang/C++

C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(1)

시데브 2023. 7. 5. 17:44

객체(Object)

 객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미한다. 객체에 메모리가 할당되는 것으로 변수, 자료 구조, 함수 또는 메소드가 될 수 있다. C++에서는 대부분 객체는 변수의 형태로 존재한다.

 

변수(Variable)와 할당(Assignment)

 C++에서 변수는 이름을 가진 객체이다. 

int num;

  위 코드는 변수 num을 정수 변수로 정의하는 예제이다. 이 명령문이 실행되면 num에는 메모리 공간이 지정(인스턴스화)된다. 

 

 예를 들어 변수 num에 메모리 주소 110이 지정되었다면 프로그램에서 변수 num을 호출할 때마다 값을 얻기 위해서 해당 위치를 찾을 것이다.

x = 10;

 

 위 코드는 변수 x의 메모리 주소 110에 값 10을 할당(assignment)하는 명령문으로 해석할 수 있다.

 

*변수의 선언과 초깃값 지정을 나눠서 진행한다면 할당(assignment), 동시에 진행되면 초기화(initialization)한다고 한다.

 

주소 연산자(Address Operator)

  주소 연산자 &을 사용해 변수에 할당된 메모리 주소를 확인할 수 있다.

#include <iostream>
using namespace std;

int main(void)
{
    int num =3;
    cout<<num<<endl;
    cout<<&num<<endl;

    return 0;
}
3
0x61fe1c

 

역참조 연산자(Dereference Operator)

 역참조 연산자 *를 사용하면 특정 메모리 주소에 할당된 값에 접근할 수 있다.

#include <iostream>
using namespace std;

int main(void)
{
    int num =3;
    cout<<num<<endl;
    cout<<&num<<endl;
    cout<<*&num<<endl;

    return 0;
}
3
0x61fe1c
3

 

포인터(Pointer)

 포인터는 메모리 주소를 저장하는 변수이다.

 

 포인터의 선언은 다음과 같이 일반 변수처럼 선언하며, 자료형과 변수의 이름 사이에 *가 붙는다.

int* iPtr; //int형 포인터
double* dPtr; //double형 포인터

int* iPtr2, *iPtr3 //int형 포인터 2개
int* iPtr4, iPtr5 // iPtr4는 int형 포인터, iPtr5는 그냥 int

 

  포인터는 메모리 주소를 저장하는 변수이기 때문에 포인터에 값을 할당할 때에 주소의 형태로 입력해야 한다. 변수의 주소를 입력하기 위해서 주소 연산자(&)를 사용한다.

int num = 3;
int *ptr = &num; // ptr은 num의 주소로 초기화됨

 

 다음 예제를 통해서 개념을 정립해보자.

#include <iostream>
using namespace std;

int main(void)
{
    int num =3;
    int *ptr = &num;
    cout<<&num<<endl;
    cout<<ptr<<endl;

    return 0;
}
0x61fe14
0x61fe14

 

C++에서는 포인터에 메모리 주소를 직접 할당할 수 없다.

int *iPtr = 0x61fe14 // 주소로 인식 x, 리터럴로 인식하여 정수가 아니기 때문에 컴파일 오류

 

 


참고자료

 

C++ 01.02 - 변수, 초기화 및 할당 (variables, initialization, and assignment)

01.02 - 변수, 초기화 및 할당 (variables, initialization, and assignment) 객체(Object) C++ 프로그램은 객체를 생성, 접근, 조작 및 파괴한다. 객체는 값을 저장하고 사용할 수 있는 메모리 조각이다. 객체는 정

boycoding.tistory.com

 

C++ 07.07 - 포인터 소개 (Introduction to pointer)

07.07 - 포인터 소개 (Introduction to pointer) '01.02 - 변수, 초기화 및 할당' 포스트에서 변수는 값을 보유하고 있는 메모리 조각의 이름이라는 것을 배웠다. 프로그램이 변수를 인스턴스화 할때 사용 가

boycoding.tistory.com

  • https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)
  • https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)