2012-04-23 69 views
9
static char* theFruit[] = { 
    "lemon", 
    "orange", 
    "apple", 
    "banana" 
}; 

Tôi biết kích thước là 4 bằng cách xem mảng này. Làm thế nào để lập trình tìm kích thước của mảng này trong C? Tôi không muốn kích thước tính theo byte.C tìm kích thước mảng tĩnh

Trả lời

25
sizeof(theFruit)/sizeof(theFruit[0]) 

Lưu ý rằng sizeof(theFruit[0]) == sizeof(char *), một hằng số.

+1

Điều đó có hiệu quả trong mọi trường hợp không? –

+0

Vâng, đó chính xác là cách của nó. Đó là lý do tại sao anh ấy nhận được +1: .... :-). Nhưng chỉ với mảng, như bạn có trong câu hỏi của bạn. Không phải với con trỏ. –

+0

@eat_a_lemon: phụ thuộc vào những gì bạn gọi mọi trường hợp :) Nó hoạt động cho các mảng tĩnh và tự động, không phải là những cái 'malloc''d. Lưu ý rằng kích thước của mảng luôn luôn là bội số của kích thước của phần tử đầu tiên, do đó phân chia được đảm bảo hoạt động và 'sizeof' chỉ xem xét các loại, vì vậy nó thậm chí hoạt động với các mảng có phần tử 0. –

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