① java空指针引用!
如果你声明了一个变量,当你引用的时候,这里面没有内容,当然会报异常了,空指针异常就是有地址,但是地址里面没有内容,举个例子,你去你同学的家里,他告诉你地址了,但是你去了里面是空房子,,就是这么一个意思了。。不知道你能明白不。。。。
② C语言NULL指针问题
不知道你用的系统和GCC的版本是什么?在我所使用的LINUX工作站以及FREEBSD工作站上均未出现此问题,输出均为"(null)"字符串,在soliras系统上测试,两个结果均为段错误,没有出现你所说的现象。
出现段错误的原因有:
1、 引用一个包含非法值的指针、例如空指针。
2、 未得到正确的权限的时候进行访问,例如往只读的内存地址写数据。
3、 内存越界,例如数组越界,变量类型不一致等。
所以这个程序出现段错误问题很明显是由第一原因引起的,而程序输出(null)个人认为应该是GCC所做的优化处理。
③ 什么是空指针异常
所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。
产生空指针异常的原因:
(1) 当一个对象不存在时又调用其方法会产生异常 obj.method() // obj对象不存在
(2) 当访问或修改一个对象不存在的字段时会产生异常 obj.method() // method方法不存在
(3)空指针引用不应该被访问扩展阅读:
空指针正常工作意义:
在许多语言,这不是一个单独的转义序列,而是八进制转义序列,单个八进制数字为0;因此,‘ ’不能跟随任何数字0通过7;否则它被解释为更长的八进制转义序列的开始。被在使用中发现各种语言的其他转义序列 00,x00,z,或的Unicode表示u0000。
表示空字符的能力并不总是意味着生成的字符串将被正确解释,因为许多程序将认为null作为字符串的结尾。因此,键入它的能力(在未经检查的用户输入的情况下)会创建一个称为空字节注入的漏洞,并可能导致安全漏洞。
空字符以逗号表示是^@。在Windows上,可以通过按住Ctrl键,然后按@(这通常需要同时按下⇧ Shift并按下数字2键)。
参考资料:网络——空指针
④ c++中空指针对象访问成员问题
我这么说吧。因为fun3函数里没有直接或间接用到this指针。
什么叫直接?你写了 this 在里面,并且这个this被访问了。
什么叫间接?你没直接写 this 但是用了成员变量等。
因为C++编译的时候,fun3是静态绑定的,所以运行的时候没有“查找对象上的fun3函数”的过程,对象有没有存在也不影响。
你可以尝试一下把fun3改成虚拟函数(virtual),这样调用过程就变成动态绑定,它就会出错了
⑤ C语言中,空指针的使用意义是什么在编程中使用空指针会带来什么影响
语言定义中说明,每一种指针类型都有一个特殊值——“空指针”——它与同类型的其它所有指针值都不相同,它“与任何对象或函数的指针值都不相等”;
不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放。
指针是个很强大的工具,可是正因为它太强大,所以要操作它不是件易事。操作不当造成的野指针,甚至会引起系统死机等比较严重的后果。
如果程序定义了一个指针,就必须要立即让它指向一个我们设定的空间或者把它设为NULL,如果没有这么做,那么这个指针里的内容是不可预知的,即不知道它指向内存中的哪个空间(即野指针),它有可能指向的是一个空白的内存区域,可能指向的是已经受保护的区域,甚至可能指向系统的关键内存,如果是那样就糟了,也许我们后面不小心对指针进行操作就有可能让系统出现紊乱,死机了