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

pass_array.cc
#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;
}