How to find the size of an integer array in C.
Any method available without traversing the whole array once, to find out the size of the array.
How to find the size of an integer array in C.
Any method available without traversing the whole array once, to find out the size of the array.
If the array is a global, static, or automatic variable (int array[10];), then sizeof(array)/sizeof(array[0]) works.
If it is a dynamically allocated array (int* array = malloc(sizeof(int)*10);) or passed as a function argument (void f(int array[])), then you cannot find its size at run-time. You will have to store the size somewhere.
Note that sizeof(array)/sizeof(array[0]) compiles just fine even for the second case, but it will silently produce the wrong result.
sizeof without the parentheses. Except in some circumstances. I never even tried to read the fineprint, and instead subscribed to the common practice to always employ them.If array is static allocated:
size_t size = sizeof(arr) / sizeof(int);
if array is dynamic allocated(heap):
int *arr = malloc(sizeof(int) * size);
where variable size is a dimension of the arr.
int len=sizeof(array)/sizeof(int);
Should work.
site_t len = sizeof(array)/sizeof(array[0]); it's a bit better (i.e. it still works when datatype of array elements has been changed.void f(int array[]) { site_t len = sizeof(array)/sizeof(array[0]); }array is an incomplete type (one case); if it's an array of int this will work.array parameter is actually a pointer.