그냥 게임개발자

Array요소 수정 방법들 본문

내 개인적인 공부/자료구조

Array요소 수정 방법들

sudoju 2024. 4. 15. 22:25

Array요소 수정할 때 크기를 정하지 않은 int arr[], 또는 배열의크기인 int arr[3], 배열의 포인터인 int* arr를 넘겨서 수정이 가능하다.

 

#include <iostream>

using namespace std;

int arr[3] = { 1, 2, 3 };

void Check1(int a[])
{
    a[2] = 100;
}

void Check2(int a[3])
{
    a[2] = 1000;
}

void Check3(int* a)
{
    a[2] = 10000;
}

int main()
{
    Check1(arr);
    cout << arr[2] << '\n';
    Check2(arr);
    cout << arr[2] << '\n';
    Check3(arr);
    cout << arr[2] << '\n';
}

뭐 매개변수 int a[]와 int a[3]은 이해가 쉬울 것이다.

다만 int* a는 무엇인가?

 

배열의 변수명은 첫번째 원소의 주소값입니다.

근데 매개변수가 받는것은 정수의 포인터입니다. 즉 주소를 전달받아야 한다는거죠.

그렇다면 arr를 넘겨주게되면 arr의 배열의 첫번째 요소에 대한 주소를 넘겨주게 되고 arr은 int를 담는 배열이며 arr은 첫번째 원소의 주소값이니 int의 포인터를 넘겨준것과 마찬가지입니다.

 

위의 2방법과 마지막 포인터로 넘겨주는 방법의 차이점은 그냥 문법차이입니다.

배열 매개변수의 사용은 코드를 읽기 쉽게 만들어줍니다.

매개변수가 배열임을 강조하기 때문이죠.

 

반면 포인터는 어떠한가요?

포인터는 더 유연해집니다.

다른 데이터 구조에 포인터를 전달할 수도 있는거죠.

 

상황에 따라 쓰고 싶은걸 쓰면 좋아요.

 

 

'내 개인적인 공부 > 자료구조' 카테고리의 다른 글

BigOTest  (0) 2024.04.15
재귀함수  (0) 2024.04.15
값에 의한 호출, 참조에 의한 호출  (0) 2024.04.14
primitive 타입, reference 타입  (0) 2024.04.14
자료구조 시간 복잡도  (0) 2024.04.14