মেমসেট () ফেরতের মূল্যের ব্যবহার কী?


90

memset()void*ফাংশনে প্রবেশের ঠিকানার মতো সর্বদা একই মান হিসাবে ফিরে আসার ঘোষণা দেওয়া হয় ।

রিটার্ন ভ্যালুর ব্যবহার কী? কেন ফিরে আসে না void?



4
এর রিটার্ন ভ্যালু ব্যবহার কী strcat()? কখনও কখনও, স্ট্যান্ডার্ড ফাংশনগুলি সেগুলি হিসাবে নির্দিষ্ট করা হয় যা তাদের হওয়া উচিত নয় ।
দেবসোলার

4
@ ম্যাথিউইউম: এছাড়াও, ফিরে আসা সামগ্রীর সাথে সাধারণত একটি শূন্য-ব্যয় যুক্ত থাকে। এমনকি যদি রিটার্নের মান কোনও রেজিস্টারে ফিট করে তবে আপনার সাধারণত সেই মানটি রেজিস্টারে লোড করতে হবে। এটির ব্যয় ছোট হলেও কম।
এনপিই

15
@ শার্পতুথ: একটি "সমস্ত মানুষকে হত্যা করুন" ফাংশন অবশ্যই নিহত মানুষের সংখ্যা অবশ্যই ফিরিয়ে দেবে।
indiv

4
@ ম্যাথিউইউম: আপনি এই ধরনের ট্রিভিয়া সম্পর্কে চিন্তা করবেন না, তবে আমি অবশ্যই করব । যদি আমি একটি সীমিত সংস্থান সিস্টেমের জন্য একটি সংকলক লিখছি? হুমমম?
থমাস এডিং

উত্তর:


36

: স্বাক্ষর সব অন্যান্য অনুরূপ ফাংশন সঙ্গে সঙ্গতিপূর্ণ হয় memcpy(), strcpy()ইত্যাদি আমি সবসময় চিন্তা এই যেমন ফাংশন শৃঙ্খল কল এক সক্রিয় করতে কাজ করা হয়েছে, এবং অন্যথায় এক্সপ্রেশন এ ধরনের কল ব্যবহার।

এটি বলেছিল, আমি কখনই এমন বাস্তব-বিশ্বের পরিস্থিতি দেখতে পাইনি যেখানে আমি রিটার্নের মানটি এমনভাবে ব্যবহার করতে বাধ্য হতে পারি।


122

এটি কল চেইনগুলির মতো ব্যবহার করা যেতে পারে:

char a[200];
strcpy(memset(a, 0, 200), "bla");

9
হ্যাঁ, এটি অবশ্যই 'চেইনিং' ব্যবহারের কেস।
Cartesius00

6
আমি উত্তরটি আপগ্রেড করেছি, কারণ এটি একটি আকর্ষণীয় ঘটনা। তবে বাস্তব জীবনে আমি মনে করি মেমসেট এবং আরআরসিপি কলগুলি আলাদা রাখা ভাল।
সোভেটোমির দিমিত্রভ

26
সি প্রোগ্রামাররা অপঠনযোগ্য কোড পছন্দ করে, তাই কোনও স্ট্যান্ডার্ড ফাংশন ডিজাইনের সময় অসীম শৃঙ্খলার অনুমতি দেওয়া আবশ্যক।
চাদ শোগগিনস

@ চ্যাডসচোগিনস কিছু হ্যাশেল কোড পড়ুন এবং আপনি জানেন যে সি-প্রোগ্রামাররা আসলে বেশ ভারব্যাটিম;) (রেজেক্স "অপারেটর" = ~ এর কথা
ভাবেন

অবশ্যই এই উদাহরণে এটি আরও বুদ্ধিমান হয়ে উঠতে পারে, অন্যভাবে, strcpyঅন্যটির জন্য, গতটির অনুলিপিটি সহকারে পয়েন্টারটি ফেরত দিতে। memset(my_strcpy(a, "bla"), 0, a + 200);(পছন্দ করুন std::copy_nএবং std::fill_nসি ++ এ করুন)।
alfC

12

যাতে অন্য কোনও ফাংশনের আর্গুমেন্ট হিসাবে ফাংশনটি ব্যবহার করার জন্য sprintf


1

গুগলিং কখন কী মেমসেট ফিরে এসেছে তা দেখার জন্য আমি এই প্রশ্নটি জুড়ে এসেছি।

আমার কিছু কোড রয়েছে যেখানে আমি একটি মানের জন্য পরীক্ষা করি, তারপরে যদি মানটি শূন্য হয় কিনা তা যদি সত্য পরীক্ষা হয়।

কারণ জিরোগুলির পরীক্ষা করার জন্য সিতে কোনও সম্পূর্ণ পোর্টেবল উপায় নেই আমাকে মাঝখানে স্মৃতিচারণ চালাতে হবে।

সুতরাং আমার কোডটি হ'ল:

if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )

এটি পূর্ববর্তী প্রশ্নগুলিতে তালিকাবদ্ধ শৃঙ্খলাবদ্ধতার উদ্দেশ্যে কথা বলে তবে এটি এই কৌশলটির জন্য ব্যবহারের একটি উদাহরণ।

আমি এটি অন্যদের কাছে রেখে যাচ্ছি এটি ভাল কোডিং কিনা তা বিচার করার জন্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.