نحوه بررسی Null در C: 7 مرحله (همراه با تصاویر)

فهرست مطالب:

نحوه بررسی Null در C: 7 مرحله (همراه با تصاویر)
نحوه بررسی Null در C: 7 مرحله (همراه با تصاویر)

تصویری: نحوه بررسی Null در C: 7 مرحله (همراه با تصاویر)

تصویری: نحوه بررسی Null در C: 7 مرحله (همراه با تصاویر)
تصویری: وقتی تو ۸ سالگی فیلم ابر قهرمانان میدیدی🦸😂 #shorts 2024, ممکن است
Anonim

در C ، NULL یک ثابت نمادین است که همیشه به نقطه ای وجود ندارد که در حافظه وجود دارد. اگرچه بسیاری از برنامه نویسان آن را برابر 0 می دانند ، اما این یک ساده سازی است که می تواند بعداً شما را تحت تأثیر قرار دهد. بهتر است اشاره گرهای خود را مستقیماً در برابر NULL بررسی کنید و در زمینه های دیگر از 0 استفاده کنید. این کار کد شما را تمیز نگه می دارد و درک آن آسان است ، زیرا می دانید که هر بار که NULL را مشاهده می کنید با اشاره گرها کار می کنید.

مراحل

قسمت 1 از 2: انجام یک بررسی تهی

Null را در C مرحله 1 بررسی کنید
Null را در C مرحله 1 بررسی کنید

مرحله 1. از کد چک استاندارد تهی استفاده کنید

موارد زیر واضح ترین روش برای نوشتن چک باطل است. استفاده خواهیم کرد ptr در این مقاله به عنوان نام اشاره گر در حال بررسی هستید.

  • if (ptr == NULL)

    {

    // کد اگر اشاره گر NULL باشد

    } دیگری {

    // کد اگر NULL نیست

    }

Null را در C مرحله 2 بررسی کنید
Null را در C مرحله 2 بررسی کنید

مرحله 2. برای هر مقداری به جز NULL تست کنید

گاهی راحت تر می توان نابرابری را آزمایش کرد. در اینجا هیچ شگفتی وجود ندارد:

  • if (ptr! = NULL) {

    // کد اگر NULL نیست

    }

Null را در C مرحله 3 بررسی کنید
Null را در C مرحله 3 بررسی کنید

مرحله 3. برای جلوگیری از خطا (اختیاری) ابتدا NULL را بنویسید

نقطه ضعف اصلی روش PTR == NULL این است که به طور تصادفی به جای آن ptr = NULL را تایپ کنید و مقدار NULL را به آن اشاره گر اختصاص دهید. این می تواند باعث سردرد شدید شود. از آنجا که آزمایش برابری (غیر) با عملوندها به صورت متقارن رفتار می کند ، می توانید با نوشتن دقیقاً به همان نتیجه برسید if (NULL == ptr) بجای. این بیشتر در برابر اشتباهات تایپی مقاوم است ، زیرا NULL = ptr تصادفی یک خطای کامپایل ساده ایجاد می کند.

این برای برخی از برنامه نویسان کمی ناخوشایند به نظر می رسد ، اما کاملاً معتبر است. اینکه از کدام رویکرد استفاده می کنید فقط به ترجیح شخصی بستگی دارد و کامپایلر شما در تشخیص خطای if (ptr = NULL) چقدر خوب است

Null را در C مرحله 4 بررسی کنید
Null را در C مرحله 4 بررسی کنید

مرحله 4. صحت متغیر را بررسی کنید

یک ساده اگر (ptr) آزمایش می کند که آیا ptr TRUE است یا خیر. اگر ptr NULL باشد ، یا اگر ptr 0 باشد FALSE برمی گرداند. تمایز در بسیاری از موارد مهم نیست ، اما توجه داشته باشید که اینها در همه معماری ها یکسان نیستند.

برعکس این است اگر (! ptr) ، که اگر ptr FALSE باشد TRUE برمی گرداند.

قسمت 2 از 2: اجتناب از اشتباهات

Null را در C مرحله 5 بررسی کنید
Null را در C مرحله 5 بررسی کنید

مرحله 1. قبل از بررسی NULL ، یک اشاره گر تنظیم کنید

یک اشتباه رایج این است که فرض کنیم یک اشاره گر تازه ایجاد شده دارای مقدار NULL است. این درست نیست. یک اشاره گر تعیین نشده هنوز به یک آدرس حافظه اشاره می کند ، نه آدرس دیگری که شما مشخص کرده اید. معمول است که اشاره گرهای تازه ایجاد شده یا تازه آزاد شده را روی NULL قرار دهید تا مطمئن شوید از این آدرس غیر مفید به طور تصادفی استفاده نمی کنید.

  • از این اشتباه اجتناب کنید:

    char *ptr؛

    if (ptr == NULL)

    {

    // این FALSE را برمی گرداند. به نشانگر یک مقدار معتبر اختصاص داده شده است.

    }

  • در عوض بنویسید:

    char *ptr = NULL؛ // این نشانگر را به NULL اختصاص می دهد

    if (ptr == NULL)

    {

    // اگر اشاره گر مجدداً تخصیص داده نشود ، TRUE برمی گردد.

    }

Null را در C مرحله 6 بررسی کنید
Null را در C مرحله 6 بررسی کنید

مرحله 2. به توابعی که می توانند NULL را برگردانند توجه کنید

اگر تابعی می تواند NULL را برگرداند ، به این فکر کنید که آیا این امکان وجود دارد یا خیر و آیا بعداً در کد شما مشکل ایجاد می کند یا خیر. در اینجا نمونه ای از عملکرد malloc با استفاده از بررسی null (اگر (ptr)) برای اطمینان از اینکه فقط اشاره گرها را با مقادیر معتبر اداره می کند:

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

    if (ptr) {

    int i؛

    برای (i = 0؛ i <N؛ ++ i)

    ptr = i ؛

    }

N را در C مرحله 7 بررسی کنید
N را در C مرحله 7 بررسی کنید

مرحله 3. درک کنید که NULL 0 است اما هنگام کار با اشاره گرها برای وضوح باید همیشه از NULL به جای 0 استفاده کنید

از لحاظ تاریخی ، C NULL را به عنوان عدد 0 (یعنی 0x00) نشان می دهد. امروزه ممکن است کمی پیچیده تر شود و بسته به سیستم عامل متفاوت است. معمولاً می توانید با استفاده از NULL بررسی کنید ptr == 0 ، اما موارد گوشه ای وجود دارد که می تواند باعث ایجاد مشکل شود. شاید مهمتر از آن ، استفاده از NULL بدیهی است که شما با اشاره گرهایی برای سایر افرادی که کد شما را می خوانند کار می کنید.

نکات

شما می توانید از این check in while loops درست مانند سایر حلقه ها استفاده کنید: while (NULL == ptr) {

توصیه شده: