কিভাবে সি এ নাল চেক করবেন: 7 টি ধাপ (ছবি সহ)

সুচিপত্র:

কিভাবে সি এ নাল চেক করবেন: 7 টি ধাপ (ছবি সহ)
কিভাবে সি এ নাল চেক করবেন: 7 টি ধাপ (ছবি সহ)

ভিডিও: কিভাবে সি এ নাল চেক করবেন: 7 টি ধাপ (ছবি সহ)

ভিডিও: কিভাবে সি এ নাল চেক করবেন: 7 টি ধাপ (ছবি সহ)
ভিডিও: GIMP 2.99.10 ডেভেলপমেন্ট রিলিজ সংস্করণে নতুন কি আছে 2024, মে
Anonim

C তে, NULL হল একটি প্রতীকী ধ্রুবক যা সর্বদা স্মৃতিতে একটি অস্তিত্বহীন পয়েন্ট নির্দেশ করে। যদিও অনেক প্রোগ্রামার এটিকে 0 এর সমান মনে করে, এটি একটি সরলীকরণ যা আপনাকে পরবর্তীতে ভ্রমণ করতে পারে। আপনার পয়েন্টারগুলি সরাসরি NULL এর বিরুদ্ধে পরীক্ষা করা এবং অন্যান্য প্রসঙ্গে 0 ব্যবহার করা ভাল। এটি আপনার কোডকে পরিষ্কার এবং বুঝতে সহজ রাখে, যেহেতু আপনি জানতে পারবেন যে আপনি প্রতিবার NULL দেখলে পয়েন্টার নিয়ে কাজ করছেন।

ধাপ

2 এর অংশ 1: একটি নাল চেক করা

সি ধাপ 1 এ নাল চেক করুন
সি ধাপ 1 এ নাল চেক করুন

ধাপ 1. স্ট্যান্ডার্ড নাল চেক কোড ব্যবহার করুন।

একটি শূন্য চেক লেখার সবচেয়ে সুস্পষ্ট উপায় নিম্নরূপ। আমরা ব্যবহার করব পিটিআর এই নিবন্ধে আপনি যে পয়েন্টারটি চেক করছেন তার নাম হিসাবে।

  • যদি (ptr == NULL)

    {

    // কোড যদি পয়েন্টার শূন্য হয়

    } অন্য {

    // কোড যদি শূন্য না হয়

    }

সি ধাপ 2 এ নাল চেক করুন
সি ধাপ 2 এ নাল চেক করুন

ধাপ 2. কোন মান জন্য পরীক্ষা কিন্তু শূন্য।

কখনও কখনও এটি পরিবর্তে অসমতার জন্য পরীক্ষা করা আরও সুবিধাজনক। এখানে কোন চমক নেই:

  • যদি (ptr! = NULL) {

    // কোড যদি শূন্য না হয়

    }

সি ধাপ 3 এ নাল চেক করুন
সি ধাপ 3 এ নাল চেক করুন

ধাপ errors. ভুলগুলি এড়াতে প্রথমে NULL লিখুন (alচ্ছিক)।

PTR == NULL পদ্ধতির প্রধান অসুবিধা হল এই সুযোগ যে আপনি ঘটনাক্রমে ptr = NULL টাইপ করবেন, সেই পয়েন্টারকে NULL মান বরাদ্দ করবেন। এটি একটি বড় মাথাব্যথার কারণ হতে পারে। যেহেতু (ইন) সমতার জন্য পরীক্ষা অপারেন্ডগুলিকে সমানভাবে আচরণ করে, আপনি লেখার মাধ্যমে ঠিক একই ফলাফল পেতে পারেন যদি (NULL == ptr) পরিবর্তে. এটি আরও টাইপ-প্রতিরোধী, যেহেতু একটি দুর্ঘটনাক্রমে NULL = ptr একটি সহজ কম্পাইল ত্রুটি তৈরি করে।

এটি কিছু প্রোগ্রামারদের কাছে কিছুটা বিশ্রী মনে হলেও এটি পুরোপুরি বৈধ। আপনি কোন পন্থাটি ব্যবহার করেন তা কেবল ব্যক্তিগত পছন্দের উপর নির্ভর করে, এবং আপনার কম্পাইলার if (ptr = NULL) ত্রুটি সনাক্ত করতে কতটা ভাল।

সি ধাপ 4 এ নাল চেক করুন
সি ধাপ 4 এ নাল চেক করুন

ধাপ 4. ভেরিয়েবলটি সত্য কিনা তা পরীক্ষা করুন।

একটি সহজ যদি (ptr) ptr সত্য কিনা তা পরীক্ষা করে। Ptr শূন্য হলে, অথবা ptr 0 হলে এটি মিথ্যা হয়ে যাবে।

এর উল্টোটা হল যদি (! পিটিআর), যা ptr মিথ্যা হলে TRUE ফিরিয়ে দেবে।

2 এর অংশ 2: ভুল এড়ানো

সি ধাপ 5 এ নাল চেক করুন
সি ধাপ 5 এ নাল চেক করুন

ধাপ 1. নুল চেক করার আগে একটি পয়েন্টার সেট করুন।

একটি সাধারণ ভুল হল অনুমান করা যে একটি নতুন তৈরি পয়েন্টার একটি শূন্য মান আছে। এটা সত্য নয়। একটি অনির্দিষ্ট পয়েন্টার এখনও একটি মেমরি ঠিকানার দিকে নির্দেশ করে, আপনি যে নির্দিষ্ট করেছেন তা নয়। আপনি দুর্ঘটনাক্রমে এই সহায়ক ঠিকানাটি ব্যবহার করবেন না তা নিশ্চিত করার জন্য নতুন তৈরি বা নতুন মুক্ত পয়েন্টারগুলি NULL এ সেট করা সাধারণ অভ্যাস।

  • এই ভুল এড়িয়ে চলুন:

    char *ptr;

    যদি (ptr == NULL)

    {

    // এটি মিথ্যা ফিরে আসবে। পয়েন্টার একটি বৈধ মান বরাদ্দ করা হয়েছে।

    }

  • পরিবর্তে লিখুন:

    char *ptr = NULL; // এটি NULL এ পয়েন্টার বরাদ্দ করে

    যদি (ptr == NULL)

    {

    // পয়েন্টারটি পুনরায় বরাদ্দ না করা হলে এটি সত্য ফিরে আসবে।

    }

সি ধাপ 6 এ নাল চেক করুন
সি ধাপ 6 এ নাল চেক করুন

ধাপ 2. শূন্য ফিরে আসতে পারে যে ফাংশন মনোযোগ দিন।

যদি একটি ফাংশন শূন্য ফিরে আসতে পারে, তাহলে এটি একটি সম্ভাবনা কিনা তা নিয়ে চিন্তা করুন, এবং এটি আপনার কোডে পরে সমস্যা সৃষ্টি করবে কিনা। এখানে নাল চেক ব্যবহার করে ম্যালোক ফাংশনের একটি উদাহরণ (যদি (ptr)) নিশ্চিত করার জন্য এটি শুধুমাত্র বৈধ মানগুলির সাথে পয়েন্টারগুলি পরিচালনা করে:

  • int * ptr = malloc (N * sizeof (int));

    যদি (ptr) {

    int i;

    জন্য (i = 0; i <N; ++ i)

    ptr = আমি;

    }

সি ধাপ 7 এ নাল চেক করুন
সি ধাপ 7 এ নাল চেক করুন

ধাপ Under. বুঝুন যে NULL হল 0 কিন্তু স্পষ্টতার জন্য পয়েন্টার নিয়ে কাজ করার সময় আপনার 0 এর পরিবর্তে NULL ব্যবহার করা উচিত।

Histতিহাসিকভাবে, সি নালকে 0 নম্বর (অর্থাৎ 0x00) হিসাবে উপস্থাপন করেছে। আজকাল এটি কিছুটা জটিল হতে পারে, এবং অপারেটিং সিস্টেমের দ্বারা পরিবর্তিত হয়। আপনি সাধারণত NULL ব্যবহার করে চেক করতে পারেন ptr == 0, কিন্তু কোণার ক্ষেত্রে আছে যেখানে এটি একটি সমস্যা সৃষ্টি করতে পারে। সম্ভবত আরো গুরুত্বপূর্ণ, NULL ব্যবহার করা এটা স্পষ্ট করে দেয় যে আপনি আপনার কোড পড়ার জন্য অন্যদের জন্য পয়েন্টার নিয়ে কাজ করছেন।

পরামর্শ

আপনি এই চেকটি ব্যবহার করতে পারেন যখন অন্য যেকোনো লুপের মতো: while (NULL == ptr) {

প্রস্তাবিত: