배열과 포인터 비교

Woogle·2022년 9월 5일
0

C++ 공부

목록 보기
5/28

개념

배열(Array)

같은 타입의 변수들로 이루어진 집합

포인터(Pointer)

값 자체가 아니라, 값의 주소(메모리)를 담는 변수


포인터 vs. 배열

  • 포인터와 배열은 다르다.
  • 용량도 다르고, 들어있는 값의 종류도 다름.
  • 다만 배열의 시작 주소를 포인터로 변환 가능하기 때문에, 같은 타입의 배열과 포인터는 완전히 호환이 된다.

예시 코드

  • 예시1
    #include <array>
    #include <iostream>
    
    int main()
    {
    	int arr[3] = {1, 2, 3};
    
    	std::cout << arr[1] << std::endl;		// 값 (2)
    	std::cout << *(arr + 1) << std::endl;	// 값 (2)
    	std::cout << &arr[1] << std::endl;		// 주소 (0x72fff23c140bc)
    	std::cout << arr + 1 << std::endl;		// 주소 (0x72fff23c140bc)
    }

* 예시2

>```cpp
#include <iostream>
int main()
{
	int arr[3] = { 10, 20, 30 };
	int* ptr_arr = arr;
	std::cout << arr[0] << "," << arr[1] << "," << arr[2] << std::endl;				// 배열 이름으로 출력
	std::cout << ptr_arr[0] << "," << ptr_arr[1] << "," << ptr_arr[2] << std::endl;	// 포인터로 출력 1
	std::cout << *(arr) << "," << *(arr + 1) << "," << *(arr + 2) << std::endl;		// 포인터로 출력 2
}


결론

  • 1차원 배열과 단일 포인터가 완전히 호환됨을 알 수 있다.

참고 자료

profile
노력하는 게임 개발자

0개의 댓글