본문 바로가기
대학/C++ 정리

C++ / 포인터

by JJO.A 2022. 11. 5.

포인터 : 메모리를 주소로 참조해야 하는 겨우 사용. 포이너에는 메모리의 주소가 저장된다.

 

포인터의 형식 
int* p;

→ 포인터 p는 int형을 가리키는 포인터로 선언되었음.

 

주소 연산자 &
p = &number;

  변수 number의 주소를 계산하여 p에 저장한다.

 

포인터 사용 간단한 예제※
int number = 10;          //변수 정의
int *p;                           //포인터 정의

p = &number;              //변수 number의 주소를 포인터 p에 저장

※포인터를 사용하기 전에는 반드시 초기화 되어야 한다. 포인터 생성 직후에는 초기화 되어 있지 않음.

 

포인터 사용시 주의할 점 :

포인터 타입과 변수의 타입은 일치하여야 한다. → int형 포인터에는 int형만이 가리킬 수 있다.

int i;
double *j;

j = &i;  //오류 : double형 포인터에 int형 변수의 주소를 대입할 수 없다.

 

간접 참조 연산자**

: 포인터 p가 가리키는 메모리 공간의 내용을 가져오려면 *p하면 된다.

#include<iostream>
using namespace std;

int main(){
	int number = 10;
    int *p = &number; //변수 number의 주소를 계산하여 p에 저장한다.
    
    cout << *p <<endl; //p가 가리키는 공간에 저장된 값을 출력한다.
    return 0;
}


결과

10

 

nullptr

포인터가 선언만 되고 초기화되지 않으면 임의의 주소를 가리키게 된다. 이런 상황에서 포인터를 이용하여 메모리의 내용을 변경하면 문제가 발생한다.

int *p;     //포인터 p는 초기화 되어 있지 않음
*p =100;  //위험한 코드

 

따라서 아무것도 가리키고 있지 않을 경우 nullptr을 사용하는 것이 바람직하다.

int *p = nullptr;