Develop & CS/C, C++

배열 매개변수 사용시 sizeof() 연산자

그믐​ 2022. 9. 6. 21:26
반응형

이번에 과제를 하면서 함수에 배열을 넘겨서 정렬을 할 일이 있는데

qsort를 연습하기도 할 겸 정렬하기가 귀찮아서 사용해보기로 했다.

해당 함수를 사용하기 위해선

 

stdlib.h 파일과

qsort(정렬할 배열, 요소 개수, 요소 크기, 비교 함수)를 알아야하는데

 

요소 개수를 구할 때 sizeof(배열)/sizeof(int)로 하려고 해서 우선 sizeof 배열이 동작하는지 살펴봤는데

뭔가 정상적으로 동작하지 않았다.

 

main 함수에서

int arr[3]; 크기로 배열을 선언하고 sizeof를 하면 정상적으로 12라는 값이 나오지만

 

mid 함수에서 sizeof를 하면 8이 나온다. 아무래도 포인터의 크기인거 같아서 찾아보니

 

정말로 포인터의 크기였고 매개변수의 배열은 주소값만을 넘기므로 포인터와 구분되지 않는..

 

결론적으로, 이런 경우에 배열의 사이즈를 함께 넘겨받는 것이 좋다고 하였다.

반응형