memset()
को रिटर्न के लिए घोषित void*
किया जाता है जो कि फ़ंक्शन में दिए गए पते के समान ही मूल्य होता है।
वापसी मूल्य का उपयोग क्या है? क्यों नहीं लौटता void
?
memset()
को रिटर्न के लिए घोषित void*
किया जाता है जो कि फ़ंक्शन में दिए गए पते के समान ही मूल्य होता है।
वापसी मूल्य का उपयोग क्या है? क्यों नहीं लौटता void
?
strcat()
? कभी-कभी, मानक कार्य वे होते हैं जो वे निर्दिष्ट होते हैं, न कि वे क्या होने चाहिए ।
जवाबों:
हस्ताक्षर अन्य सभी समान कार्यों के अनुरूप है: आदि memcpy()
, strcpy()
मैंने हमेशा सोचा था कि यह इस तरह के कार्यों के लिए एक श्रृंखला कॉल को सक्षम करने के लिए किया गया था, और अन्यथा अभिव्यक्ति में ऐसी कॉल का उपयोग करने के लिए।
उस ने कहा, मैं कभी भी एक वास्तविक दुनिया की स्थिति में नहीं आया हूं जहां मैं इस तरह से वापसी मूल्य का उपयोग करने के लिए मजबूर महसूस करूंगा।
इसका उपयोग कॉल चाइनिंग के लिए किया जा सकता है जैसे:
char a[200];
strcpy(memset(a, 0, 200), "bla");
strcpy
पिछले एक कॉपी किए गए पॉइंटर को वापस करने के लिए । memset(my_strcpy(a, "bla"), 0, a + 200);
(जैसे std::copy_n
और std::fill_n
C ++ में करते हैं)।
मुझे यह सवाल तब आया जब गोग्लिंग ने यह देखने के लिए कि क्या वापसी की थी।
मेरे पास कुछ कोड हैं जहां मैं एक मान के लिए परीक्षण करता हूं, फिर यदि कोई मान शून्य है तो यह देखने के लिए सही परीक्षण है।
क्योंकि शून्य के लिए परीक्षण करने के लिए सी में कोई पूरी तरह से पोर्टेबल तरीका नहीं है, मुझे बीच में मेमसेट चलाना होगा।
तो मेरा कोड है:
if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )
यह पिछले प्रश्नों में सूचीबद्ध चेनिंग उद्देश्य के लिए बोलता है, लेकिन यह इस तकनीक के लिए उपयोग का एक उदाहरण है।
मैं इसे दूसरों के लिए न्याय करने के लिए छोड़ दूंगा कि क्या यह अच्छा कोडिंग है या नहीं।