배열을 함수의 매개변수로 사용할 경우,
C/C++ 에서는 함수 호출 시에 배열에 저장된 값을 전달하지 않고 (값을 복제하여 전달하지 않음)
배열의 주소를 전달하도록 구현되어있다.
아래 코드를 참고하자.
#include <stdio.h>
void test(int tmp[]){
// 주소가 오는거기때문에 int *tmp 로 받을수도 있다.
printf("tmp 사이즈 : %d\n", sizeof(tmp));
// 해당 값은 4가 나오며, 이는 포인터 인것을 알 수 있다.
printf("함수 안 배열 주소 : %d\n", tmp);
// arr 의 주소값이 나온다.
tmp[0] = 10;
// 함수안에서 값을 변경해도 전체적으로 변경되는지 테스트
}
int main(){
int arr[10] = { 9, 1, 2, 4, 5, 6, 2, 3, 7, 8 };
printf("배열 주소 : %d\n", &arr);
printf("배열 주소 : %d\n", arr);
printf("배열 주소 (arr[0]) : %d\n", &arr[0]);
// 위 세개 모두 arr의 메모리 주소를 나타낸다.
test(arr);
// 해당 배열을 함수에 전달한다 ( 주소가 전달된다. )
printf("변경된 값이 제대로 될까? : %d\n", arr[0]);
// 같은 주소의 값을 변경하는거기때문에 정상적으로 작동함/ 10 출력!!
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
[C/C++] swap 함수 구현으로 보는 포인터 공부 (0) | 2020.07.11 |
---|---|
[C/C++] 변수 포인터 및 몇가지 테스트 (0) | 2020.07.09 |
[Visual Studio C++] scanf (_CRT_SECURE_NO_WARNINGS) 에러 해결 (0) | 2020.07.08 |
[알고리즘] C++ 자주 쓰는 STL 정리 (0) | 2020.07.07 |
[C++] 이클립스 C/C++ 연동하기 (0) | 2019.06.09 |