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
সি ++ এ করুন)।
গুগলিং কখন কী মেমসেট ফিরে এসেছে তা দেখার জন্য আমি এই প্রশ্নটি জুড়ে এসেছি।
আমার কিছু কোড রয়েছে যেখানে আমি একটি মানের জন্য পরীক্ষা করি, তারপরে যদি মানটি শূন্য হয় কিনা তা যদি সত্য পরীক্ষা হয়।
কারণ জিরোগুলির পরীক্ষা করার জন্য সিতে কোনও সম্পূর্ণ পোর্টেবল উপায় নেই আমাকে মাঝখানে স্মৃতিচারণ চালাতে হবে।
সুতরাং আমার কোডটি হ'ল:
if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )
এটি পূর্ববর্তী প্রশ্নগুলিতে তালিকাবদ্ধ শৃঙ্খলাবদ্ধতার উদ্দেশ্যে কথা বলে তবে এটি এই কৌশলটির জন্য ব্যবহারের একটি উদাহরণ।
আমি এটি অন্যদের কাছে রেখে যাচ্ছি এটি ভাল কোডিং কিনা তা বিচার করার জন্য।