为什么值NULL指针的地址不同下面我有一个示例程序,我试图理解NULL指针的概念。这里&q打印不同的地址,"q"给出0这是什么原因。
#include <iostream>
using namespace std;
int main()
{
int *q=NULL;
cout <<"adress of pointer qn" << q<<endl;
cout <<"adress with apersand pointer qn" << &q<<endl;
}
NULL指针是在几个标准库(包括iostream)中定义的值为零的常量。
在大多数操作系统上,程序不允许访问地址为0的内存,因为该内存由操作系统保留。然而,存储器地址0具有特殊意义;它用信号表示指针不打算指向可访问的存储器位置。但按照惯例,如果指针包含null(零)值,则假定它不指向任何内容。
引用不是指针。
引用应初始化为引用有效对象或作用[注意:特别是,null引用不能存在于定义良好的程序,因为创建这样一个引用的唯一方法将其绑定到通过取消引用null获得的"对象"指针,导致未定义的行为。如9.6所述引用不能直接绑定到位字段。]
空指针当然不会指向"有效的对象或函数",标准委员会内部也不希望引入空引用。
您已经用NULL初始化了q,这就是q给出0的原因。然而,变量q存储在某个地方,即地址&q给出。