C++

[basic] C++ - Pointers (포인터)

907
목차
  1. Pointers (포인터) 생성
  2. Dereference (역참조) - 메모리 주소 및 값 얻기
  3. Dereference Modify (역참조 수정)

 

Pointers (포인터) 생성

 

1. 

& 연산자 사용해 변수의 메모리 주소 얻기 배웠는데,

포인터는 변수의 메모리 주소를 값으로 갖는 것 말함.

 

2.

포인터는 변수와 동일 자료형으로 선언.


3.

포인터는 자료형 바로 뒤에 * 연산자 붙임. (※ 3가지 모두 가능.)

① string* hz; // 가장 선호됨.

② string *hz;

③ string * hz;

 


[예제] 

 

#include <iostream>

#include <string>

using namespace std;

int main() {

  string hz = "Homzzang.com";  // 변수 선언.

  string* ptr = &hz; // 포인터 선언.

  cout << hz << "\n"; // Homzzang.com (변수)

  cout << &hz << "\n"; // 0x7fff7ccfc300 (변수의 메모리 주소)

  cout << ptr << "\n"; // 0x7fff7ccfc300 (포인터)

  return 0;

}

 

 

Dereference (역참조) - 메모리 주소 및 값 얻기

 

포인터를 사용해 변수 메모리 위치 알 수 있는데,

포인터 앞에 * 연산자 붙이면 변수값 확인 가능.

 


 

#include <iostream>

#include <string>

using namespace std;

int main() {

  string hz = "Homzzang.com";

  string* ptr = &hz;  

  cout << ptr << "\n"; // 0x7fff88923840 (포인터)

  cout << *ptr << "\n"; // Homzzang.com (역참조)

  return 0;

}

 


PS. 주의.

* 기호는 '포인터 생성'과 '역참조' 모두에 사용되니 주의.

① 선언에 사용 O 경우, 포인터 생성. (예) string*ptr

② 선언에 사용 X 경우, 역참조. (예) *ptr

 

 

Dereference Modify (역참조 수정)

 

역참조 값 수정 가능. 

이 때, 변수 값도 함께 수정되나, 포인터 (= 메모리 위치)는 불변.

 


[예제]

 

#include <iostream>

#include <string>

using namespace std;


int main() {

  string hz = "Homzzang.com";

  string* ptr = &hz; // 포인터 선언

  

  cout << hz << "\n"; // 변수값 (Homzzang.com)

  cout << &hz << "\n"; // 메모리주소 (0x7ffc282938f0)

  cout << ptr << "\n"; // 포인터 (0x7ffc282938f0)  

  cout << *ptr << "\n"; // 역참조 (Homzzang.com)

  

  *ptr = "홈짱닷컴"; // 역참조 값 수정.

  

  cout << *ptr << "\n"; // 새 역참조 (홈짱닷컴)

  cout << ptr << "\n"; // 포인터 (0x7ffdcc3fbc60)

  cout << &hz << "\n"; // 메모리주소 (0x7ffc282938f0)

  cout << hz << "\n"; // 새 변수값 (홈짱닷컴)

  return 0;

}

 



분류 제목
basic C++ - Home (입문) - 추천 링크
basic C++ - Intro (소개) - 용도・특징
basic C++ - Start (시작) - Code::Blocks (코드 블럭스) 설치/실행/세팅. ※ 한글 깨짐 해…
basic C++ - Syntax (구문)
basic C++ - Output (출력)
basic C++ - New Lines (줄바꿈)
basic C++ - Comment (주석)
basic C++ - Variable (변수) ★ ※ 상수
basic C++ - User Input (사용자 입력)
basic C++ - Data Type (데이터 타입) - 자료형
basic C++ - Operator (연산자)
basic C++ - String (문자열)
basic C++ - Math (수학)
basic C++ - Boolean (참거짓)
basic C++ - If ... Else - (이프 조건문) ★
1/3
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱닷컴 PC버전 로그인