2010-04-05 2 views
6

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

+0

Возможный дубликат: http://stackoverflow.com/questions/851716/count-repeated-elements-in-an-array-in -c –

+1

Возможный дубликат: http://stackoverflow.com/questions/2347766/how-many-elements-are-full-in-ac-array –

ответ

10

Невозможно найти количество элементов в динамически создаваемом массиве. Для нединамического массива вы можете использовать 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; 
} 
+6

Обычно можно использовать 'sizeof (array)/sizeof (array [0]). Кроме того, могут быть нестандартные, не переносные способы поиска количества элементов в динамическом массиве, но лучше хранить размер отдельно при создании и передавать его на все, что нужно знать о размере. –

+0

@ Дань Да, набрав, не задумываясь, спасибо. – 2010-04-05 09:46:21

+1

@Georg Пожалуйста, не редактируйте техническое содержание моих ответов - я написал код, который я разместил довольно сознательно. Если вы думаете, что его можно улучшить, сделайте комментарий или отправьте свой ответ. – 2010-04-05 19:42:55

Смежные вопросы