![[C언어] 배열 파라미터와 포인터 파라미터의 차이점](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fma7s2%2FbtsakcbWsW6%2F2FkysNCitMIUkDLDkgoTsK%2Fimg.jpg)
C 언어에서는 배열을 함수에 전달하는 두 가지 방법이 있습니다. 배열 파라미터를 사용하거나 포인터 파라미터를 사용할 수 있습니다.
두 방법 모두 배열을 전달하고 비슷한 결과를 얻을 수 있지만 차이점이 있습니다.
배열 파라미터
배열이 파라미터로 전달될 때 실제로는 reference로 전달됩니다.
이는 함수가 원래 배열에 대한 포인터를 받아들인다는 것을 의미합니다. 함수 내에서 배열 값을 변경하면 원래 배열에도 똑같이 변경됩니다.
void func(int arr[], int size) {
for(int i = 0; i < size; i++) {
arr[i] = i * 5;
}
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5); // arr = { 0, 5, 10, 15, 20 }
return 0;
}
위 코드에서 func()
함수는 정수 배열과 크기를 파라미터로 받습니다. 배열 파라미터 arr
는 실제로는 main에서 전달된 원래 배열에 대한 포인터입니다. func()
내에서 arr에 대한 변경 사항은 main 함수에서 선언된 원래 배열 arr
을 수정합니다.
포인터 파라미터
다른 방법으로 포인터 파라미터를 사용할 수 있습니다.
함수 파라미터를 통해 넘길 배열 이름 앞에 별표(*
)를 넣어 포인터 파라미터를 선언할 수 있습니다.
void func(int *arr, int size) {
for(int i = 0; i < size; i++) {
arr[i] = i * 5;
}
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5); // arr = { 0, 5, 10, 15, 20 }
return 0;
}
위 코드에서 func()
함수는 첫 번째 파라미터로 정수에 대한 포인터를 받도록 선언됩니다. main에서 배열 매개변수 arr
는 배열의 첫 번째 요소에 대한 포인터로 암시적으로 변환되어 func()
로 전달됩니다. 다시 말해, func()
내에서 arr
에 대한 변경 사항은 main에서 선언된 원래 배열 arr
을 수정합니다.
이 두 방법 사이의 주요 차이점은 문법적입니다. 배열 매개변수의 사용은 때로 코드를 더 읽기 쉽게 만들 수 있으며, 매개변수가 배열임을 강조하기 때문입니다. 반면, 포인터 매개변수는 더 유연하며 배열뿐만 아니라 다른 데이터 구조에 대한 포인터를 전달할 수 있습니다.
'프로그래밍 언어 > C' 카테고리의 다른 글
[C언어] 문자와 문자열 (0) | 2024.07.14 |
---|---|
[C언어] union으로 공용체 정의하기 (0) | 2023.04.14 |
[C언어] typedef로 자료형 재정의하기 (0) | 2023.04.14 |
[C언어] struct로 구조체 정의하기 (0) | 2023.04.14 |
[C언어] 배열 포인터와 포인터 배열 (1) | 2023.04.14 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!