• 회원가입
  • 로그인
  • 구글아이디로 로그인

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

906  
목차
  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++ - references (참조변수) + 변수의 메모리 주소
basic C++ - Pointers (포인터)
function C++ - Functions (함수) - 정의/호출
function C++ - Function Parameters (함수 매개변수)
function C++ - Function Overloading (함수 오버로딩)
class C++ - OOP (객체 지향 프로그래밍)
class C++ - Class (클래스) / Object (객체)
class C++ - Class Methods (클래스 메서드)
class C++ - Constructors (생성자)
class C++ - Access Specifiers (접근지정자)
class C++ - Encapsulation (캡슐화)
class C++ - Inheritance (상속)
class C++ - Polymorphism (다형성)
class C++ - Files (파일) - 파일생성/파일읽기/파일쓰기
class C++ - Exceptions (= Try...Catch..) - 에러 제어
howto C++ - 사용자 입력값 더하기 ★ (Add Two Numbers)
2/2
목록
찾아주셔서 감사합니다. Since 2012