سلام. بستگی به این داره که درc++ کجا استفاده بشن. فرض کن یک متغیر از نوع int تعریف می کنی اگه این متغیر رو برابر با NULL قرار بدی و چاپش کنی مقدار صفر رو نشون میده و در اینجا null با صفر برابره. اما اگه یک متغیر از نوع اشاره گر باشه و برابر NULL قرار بدی اشاره به خانه صفر میکنه و وقتی مقدار اشاره گر را چاپ کنی عدد 00000000 را چاپ میکنه و این خانه حافظه فاقد مقداره (در این متغیر آدرس حافظه قرار گرفته شده است). اما نمی تونی یک اشاره گر رو برابر صفر قرار بدی چون که صفر مقداره و خانه حافظه نیست (مثلا اینطوری int *x = 0)!
#include <iostream>
using namespace std;
int main()
{
int x = NULL;
cout << "X= " << x << endl;
int *y = NULL;
cout << "y= " << y << endl;
y = &x;
cout << "y= " << y << endl;
cin.get();
}
ویرایش:
بهتره زمانی که میخوای بگی که اشاره گر به جایی اشاره نمی کنه به جای اینکه از صفر استفاده کنی از NULL استفاده کن. این باعث خوانایی کد میشه. برای مثال.
int var = 20;
int *ptr = 0;
ptr = &var;
*ptr = 0;
در کد بالا خط دومش صفر به اشاره گر null اشاره می کنه اما در خط چهارم به مقدار صفر integer اشاره می کنه.