[C++]_S5-01_Pointer

신치우·2025년 2월 9일

CPP

목록 보기
28/62
#include <iostream>
using namespace std;

// 오늘의 주제 : 포인터



int main()
{
	// 지금까지 사용한 방식
	// number 라는 이름의 4바이트 정수 타입의 바구니를 만든다
	// number라는 변수 --> 스택 메모리에 할당
	// number = 1 --> number라는 바구니에 1이라는 숫자를 넣는다는 의미
	// 따라서 스택 메모리에 있는 특정 주소(number 바구니)에 우리가 원하는 값을 넣은 셈
	// number는 비유하자면 메모리에 이름을 붙인 것
	int number = 1;

	// Type* 변수이름;
	// 2가지 요소
	// - Type
	// - *

	// 바구니는 바구니인데..
	// [주소를 저장하는 바구니다!]
	// 변수 선언할 때 * 등장했다 -> 포인터 = 주소
	// 참고) 포인터라는 바구니는 4바이트(32비트) or  8바이트(64비트) 고정 크기

	int* ptr = &number;

	// 근데 남의 주소를 갖고 뭘 하라는거지?
	// 추가 문법 : [주소를 저장하는 바구니]가 가리키는 주소로 가서 무엇인가를 해라!
	// *변수이름 = 값;

	// * -> 포탈을 타고 순간이동 한다고 생각
	// *이 여러번 등장하니 헷갈리넨드, 사용 시점에 따라서 구분해서 기억하자
	// - 변수 선언 (주소를 저장하는 바구니)
	// - 사용할때 (포탈을 타고 순간이동)
	int value1 = *ptr;
	*ptr = 2;

	return 0;
}
  1. 주소를 비교해보자
    &number

&ptr

  1. 값을 비교해보자

  2. int value 의 경우 ptr의 값만을 가져오게됨
    value1의 주소를 확인하면 ptr과 관련이 없는 것을 확인할 수 있게됨
    하지만 값은 1이 할당됨

  3. *ptr을 통해 값을 변경하게되면 number에도 영향을 미침

profile
https://shin8037.tistory.com/

0개의 댓글