c++ 포인터 기초

2022. 1. 31. 18:13·Language/C++

 

변수 가리키기 - 포인터

 

 

포인터

 

변수의 주소를 저장하는 변수, 주로 ptr이라고 씀.

 

#include <iostream>
using namespace std;


int main() {
	int a = 20; 

	int* ptr_a; // 포인터 변수, *(별표)로 구분
	ptr_a = &a; // 다른 변수의 '주소를 저장하는' 변수

	cout << "a의 값: " << a << endl;
	cout << "a의 주소값: " << &a << endl;
	cout << "ptr_a에 '저장된' 값: " << ptr_a << endl;
	cout << "ptr_a가 '가리키는' 변수의 값: " << *ptr_a << endl;

	// ptr 자체로는 주소를 나타냄. 별표를 붙이면 변수 가리킴.
}

 

 

포인터 활용해 변수값 바꾸기
#include <iostream>
using namespace std;


int main() {
	int a = 10;

	int* ptr;
	ptr = &a;

	cout << "a의 값: " << a << endl;

	*ptr = 20; // a의 값을 바꾸는 것과 똑같음.
	           // 주소가 가리키고있는 변수값 = a.

	cout << "a의 값: " << a << endl;
}

 

포인터를 가리키는 포인터
#include <iostream>
using namespace std;


int main() {
	int a = 10;

	int* ptr;
	ptr = &a;

	int** ptr_ptr; // 포인터를 가리키는 포인터
	ptr_ptr = &ptr;

	cout << "a = " << a << endl;
	cout << "&a = " << &a << endl;

	cout << "ptr = " << ptr << endl;
	cout << "&ptr = " << &ptr << endl;

	cout << "ptr_ptr = " << ptr_ptr << endl;
	cout << "*ptr_ptr = " << *ptr_ptr << endl;
	cout << "**ptr_ptr = " << **ptr_ptr << endl;
}
// 출력
a = 10
&a = 0083F9CC
ptr = 0083F9CC
&ptr = 0083F9C0
ptr_ptr = 0083F9C0
*ptr_ptr = 0083F9CC
**ptr_ptr = 10

 

복잡하게 생각하지 말자. 복잡해보이지만...ㅠ

 

a는 10, 주소값(&a)이 F9CC다. 

근데 ptr이라는 포인터로 a를 가리켰으니

ptr은 &a고 따라서 F9CC임.

*ptr은 10이겠지~ 변수값(a)이니까.

 

근데 여기서 한 번 더 감.

a를 가리키는 포인터를, 가리키는 포인터 = ptr_ptr 이라고 두자.

ptr_ptr은 &ptr이고 따라서 F9C0임.

*ptr_ptr은 F9CC이겠지~ 변수값(ptr)이니까.

**ptr_ptr은 10이겠지? 변수값(a)이니까!

 

저작자표시 (새창열림)

'Language > C++' 카테고리의 다른 글

비쥬얼 스튜디오 오류 해결: lnt-arithmetic-overflow  (0) 2023.05.07
c++ 실행 속도 높이기  (0) 2021.12.18
c++ wntdll.pdb 오류 해결하기 - 기호 서버 체크  (0) 2021.11.07
'Language/C++' 카테고리의 다른 글
  • 비쥬얼 스튜디오 오류 해결: lnt-arithmetic-overflow
  • c++ 실행 속도 높이기
  • c++ wntdll.pdb 오류 해결하기 - 기호 서버 체크
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (192) N
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (16) N
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
        • Conference (1) N
      • IT (3)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • Statistics (11)
      • Book (5) N
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    네트워크
    생활코딩
    OS
    DP
    백준
    Java
    Python
    운영체제
    React
    C++
    BAEKJOON
    JavaScript
    자바기반응용프로그래밍
    BFS
    코드트리
    파이썬
    자바스크립트
    통계학
    그리디
    github
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
c++ 포인터 기초
상단으로

티스토리툴바