포인터

BS_Lee·2024년 4월 29일
0

C++

목록 보기
3/15

포인터란?

메모리에 주소값을 저장하는 변수이다. 포인터 변수는 *를 사용하여 선언하면 된다.

포인터를 사용하는 이유?

  • 메모리 주소를 직접 참조하므로 다양한 자료형 변수에 조작이 용이
  • Call by Reference방식을 이용할 수 있음. ⇒ 전역변수의 사용을 억제
  • 배열, 구조체 등 복잡하고 다양한 자료구조의 데이터에 쉽게 접근하고 조작할 수 있다.
  • 메모리의 동적 할당(힙 영역)을 가능하게 한다

예제코드

#include <iostream>

using namespace std;

int main() {
    
    // 배열 변수 선언
    char name[] = "lee beom seok";
		
		// name 배열의 시작 주소를 가리키고 있음.
    char* ptName = name;
    
    // 위 코드랑 똑같다고 보면 됨. 배열할당할 때 메모리에 순차적으로 할당함.
    char* ptName = &name[0];
    
    // 출력결과: lee beom seok
		cout << ptName;
    
    return 0;
}

포인터 변수에 배열을 집어 넣을시, 포인터 변수에는 배열의 첫 번째 주소값만 들어가 있다. 배열을 선언할 때는 순차적으로 메모리에 로드 되기 때문에 나중에 포인터 변수를 활용하여 뒤에있는 값까지 가져올 수 있다.

#include <iostream>

using namespace std;

int main() {
    
    // 배열 변수 선언
    char name[] = "lee beom seok";
		
		char* ptName = name
    
    // 출력결과: l
    cout << *(ptName);
    // 출력결과: e
    cout << *(ptName+2);
    
    ptName = &name[1];
    // 출력결과: l
	  cout << *(ptName-1);
    
    return 0;
}

만일 배열 중에서 하나만 출력하고 싶을 때는 위 예제를 참고하면 된다.

참조와 포인터가 헷갈리다면...?

// 참조 대상
int n = 4;

// n과 같은 공간에 살고있는 a.
int &a = n;

// n의 주소를 가지고 있는 a.
int a = &n;
profile
설명이 가능할 때까지 공부하기.

0개의 댓글