When passing arrays to functions in C, the compiler converts array parameters into pointer parameters. Because sizeof(arr) inside a function evaluates to pointer size rather than total array bytes, array size must be passed explicitly.
Passing Array to Function Code Example
#include <stdio.h>
// Function taking const array pointer and size parameter
void print_elements(const int *arr, size_t size) {
for (size_t i = 0; i < size; i++) {
printf("Elem[%zu] = %d\n", i, arr[i]);
}
}
int main(void) {
int data[] = {5, 10, 15, 20, 25};
size_t count = sizeof(data) / sizeof(data[0]);
print_elements(data, count);
return 0;
}
Comments and corrections