Число элементов в статическом массиве и динамическом массиве

Что самый быстрый путь состоит в том, чтобы найти числом элементов в статическом массиве и динамическом массиве?

6
задан webgenius 5 April 2010 в 09:36
поделиться

1 ответ

Невозможно определить количество элементов в динамически созданном массиве. Для нединамического массива вы можете использовать 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;
}
10
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: