Количество элементов в статическом массиве и динамическом массиве - PullRequest
6 голосов
/ 05 апреля 2010

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

1 Ответ

10 голосов
/ 05 апреля 2010

Нет способа найти количество элементов в динамически создаваемом массиве. Для нединамического массива вы можете использовать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...