空指针究竟指向了内存的哪个地方?
1,按照标准来说NULL和0是一样的int *p=new int(0)和int *p=new int(NULL)结果是一样的。
2,int *p=NULL和int *p=0;都是定义指针p并初始化指针p为指向0x00000000的地址(至少WINDOWS操作系统是这样的)。“0x00000000”此地址可理解为空地址。当然你也可以自己写个操作系统或编译器把该地址定为“0xFFFFFFFF",甚至更变态的地址
3,我们没有必要讨论NULL和0的区别。讨论不出结果的,因为操作系统,编译器已经做成这样子了。
char *p1=new char('1');
char *p2="123456";
cout<<p1<<endl;cout<<*p1<<endl;cout<<p2<<endl;cout<<*p2;
char *p3="NULL";char *p3='0';
char *p3=NULL; char *p3=0;
int *p6=0;int *p7=new int(0);
cout<<p7<<endl;
cout<<*p7<<endl;
搞清楚以上这些就行了。
int *p=0;
int *p=1;//这个是错的;