Нет способа найти количество элементов в динамически создаваемом массиве. Для нединамического массива вы можете использовать sizeof(array)/sizeof(type)
. Однако это не так полезно, как кажется:
void f( int a[] ) {
// sizeof(a) will be the size of a pointer, probably 4
}
int main() {
int a[100];
// sizeof(a)/sizeof(int) will be 100
f( a );
}
Это потому, что массивы распадаются на указатели при передаче в функции. Таким образом, в обоих случаях вам, вероятно, нужно запомнить размер массива и передать его в функции в качестве отдельного параметра. Так что функция для суммирования массива (например) будет выглядеть так:
int sum( int a[], int n ) {
int total = 0, i;
for ( i = 0; i < n; i++ ) {
total += a[i];
}
return total;
}