2010-04-05 50 views
6

Cách nhanh nhất để tìm số phần tử trong mảng tĩnh và mảng động là gì?Số phần tử trong mảng tĩnh và mảng động

+0

có thể trùng lặp: http://stackoverflow.com/questions/851716/count-repeated-elements-in-an-array-in -c –

+1

Có thể trùng lặp: http://stackoverflow.com/questions/2347766/how-many-elements-are-full-in-ac-array –

Trả lời

10

Không có cách nào để tìm số phần tử trong mảng được tạo động. Đối với mảng không động, bạn có thể sử dụng sizeof(array)/sizeof(type). Tuy nhiên, điều này không hữu ích như có vẻ như:

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); 
} 

Điều này là do mảng phân rã thành con trỏ khi được chuyển đến hàm. Vì vậy, trong cả hai trường hợp, bạn có thể cần phải nhớ kích thước của mảng và chuyển nó đến các hàm như một tham số riêng biệt. Vì vậy, một chức năng để tổng hợp một mảng (ví dụ) sẽ trông như thế này:

int sum(int a[], int n) { 
    int total = 0, i;  
    for (i = 0; i < n; i++) { 
     total += a[i]; 
    } 
    return total; 
} 
+6

Thông thường người ta sẽ sử dụng 'sizeof (mảng)/sizeof (mảng [0]) '. Ngoài ra, có thể có các cách không chuẩn, không di động để tìm số phần tử trong mảng động, nhưng tốt nhất là lưu trữ kích thước riêng biệt khi tạo và chuyển cho bất kỳ thứ gì cần biết kích thước. –

+0

@Dan Có, gõ mà không cần suy nghĩ ở đó - cảm ơn. –

+1

@Georg Vui lòng không chỉnh sửa nội dung kỹ thuật của câu trả lời của tôi - Tôi đã viết mã tôi đăng khá có ý thức. Nếu bạn nghĩ rằng nó có thể được cải thiện, hãy bình luận hoặc đăng câu trả lời của riêng bạn. –

Các vấn đề liên quan