下列关于指针变量赋空值的说法错误的是()
A)当赋空值的时候,变量指向地址为0的存储单元
B)赋值语句可以表达为变量名=′\0′;
C)赋值语句可以表达为变量名=0;
D)一个指针变量可以被赋空值
纠正一下解析
int* ptr = NULL;
表示ptr指向的就是地址0的四字节(0x0000 0000)或八字节(0x0000 0000 0000 0000)地址。
只是从虚拟内存0开始的一段内存属于操作系统保留地址段,不允许被读写。
所以A答案正确。
快乐小土狗 回复 北方: 指针并不是指向地址为0的存储单元,而是具有一个确定的值一“空”。企图通过一个空指针去访问一个存储单元时将会得到一个出错信息。
北方 回复 快乐小土狗: 这有啥非得跟我犟的。自己看汇编代码,看看是不是给ptr赋值地址和给ptr赋值0是一个写法。是一个写法就是代表指针指向的就是数字0的地址。 int *ptr = NULL; 00D63B98 mov dword ptr [ptr],0 int a = 10; 00D63B9F mov dword ptr [a],0Ah int *ptr2 = &a; 00D63BA6 lea eax,[a] 00D63BA9 mov dword ptr [ptr2],eax
北方 回复 北方: 代码都是机器生成的
除了给指针变量赋地址值外,还可以给指针变量赋NULL值,由于NULL的代码值为0,所以,指针变量名=NULL;等同于变量名=′\0′;或变量名=0;,指针变量并不是指向一个地址为0的存储单元,而是具有一个空值。注意:指针变量赋地址值的方式可以是通过求地址运算获得地址值、通过指针变量获得和通过标准函数获得地址值。
【答案】:A
【解析】: 除...
用户登录可进行刷题及查看答案
【解析】: 除了给指针变量赋地址值外,还可以给指针变量赋NULL值,由于NULL的代码值为0,所以,指针变量名=NULL;等同于变量名=′\0′;或变量名=0;,指针变量并不是指向一个地址为0的存储单元,而是具有一个空值。注意:指针变量赋地址值的方式可以是通过求地址运算获得地址值、通过指针变量获得和通过标准函数获得地址值。
登录后提交答案