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

मुझे पता है कि इस सरणी को देखकर आकार 4 है। मैं सी में इस सरणी के आकार को प्रोग्रामेटिक रूप से कैसे ढूंढूं? मैं बाइट्स में आकार नहीं चाहता।सी स्थिर सरणी आकार

उत्तर

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

ध्यान दें कि sizeof(theFruit[0]) == sizeof(char *), स्थिर है।

+1

क्या यह हर मामले में काम करेगा? –

+0

हां, यह बिल्कुल सही तरीका है। यही कारण है कि वह +1 हो रहा है .... :-)। लेकिन केवल आपके प्रश्नों के अनुसार, सरणी के साथ। पॉइंटर्स के साथ नहीं। –

+0

@eat_a_lemon: आप जो भी मामला कहते हैं उस पर निर्भर करता है :) यह स्थैतिक और स्वचालित सरणी के लिए काम करता है, न कि 'malloc''d। ध्यान दें कि सरणी का आकार हमेशा पहले तत्व के आकार का एक बहु होता है, इसलिए विभाजन को काम करने की गारंटी दी जाती है, और 'आकार' केवल प्रकारों को देखता है, इसलिए यह शून्य तत्वों वाले सरणी के लिए भी काम करता है। –

संबंधित मुद्दे