मुझे एक पॉइंटर सरणी की लंबाई खोजने में परेशानी हो रही है। मान लीजिए कि मैं दो:सी ++ पॉइंटर सरणी की लंबाई कैसे प्राप्त करें?
char array[40] = "hello"; // size 40
int length = sizeof array/sizeof array[0]; // no problem returns 40
// कैसे मुझे लगता है कि सरणी में पहला तत्व के लिए केवल एक सूचक के साथ सरणी की लंबाई मिलता है?
char* pchar = array;
// अगर
std::strlen(pchar); // this returns the length of 5... i want length 40
// अगर
int count = 0;
while(true)
{
if(*(pchar + count) == '\0') // returns 5...
break;
count++;
}
मैं कैसे यह सरणी में पहला तत्व करने के लिए सिर्फ एक सूचक से लंबाई 40 वापस जाने के लिए मिलता है?
मैंने पाया कि मैं यह कर सकता हूं।
int count = 0;
while(true)
{
if(*(pchar + count) == '\0' && *(pchar + count + 1) != '\0')
break;
count++;
}
यह रिटर्न 39 है, यह अच्छा है लेकिन मुझे लगता है कि यह कुछ स्थितियों में छोटी हो सकती है।
आप एक सूचक से एक सरणी की लंबाई नहीं मिल सकता है (आपके उदाहरणों या कुछ और हटाने जैसे)
इस तरह, आप करने के लिए जो कुछ भी आप चाहते हैं कर सकते हैं: की तरह थोड़ा सा। – juanchopanza
हैक्स हैं, लेकिन ऐसा करने के लिए कोई अंतर्निहित तरीका नहीं है। – ApproachingDarknessFish