void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容的操作.必须先转成别的类型的指针才可以把内容解释出来.
还有'\0',这也不是空指针所指的内容. '\0'是表示一个字符串的结尾而已,并不是NULL的意思.
真正的空指针是说,这个指针没有指向一块有意义的内存,比如说:
char* k;
这里这个k就叫空指针.我们并未让它指向任意地点.
又或者
char* k = NULL;
这里这个k也叫空指针,因为它指向NULL 也就是0,注意是整数0,不是'\0'
一个空指针我们也无法对它进行取内容操作.
空指针只有在真正指向了一块有意义的内存后,我们才能对它取内容.也就是说要这样
k = "hello world!";
这时k就不是空指针了.
其本质在于void *(无类型指针)可以包容任何类型的指针,也就是可以把任何类型指针赋值给void ×,但反过来将void ×赋值给某一类型指针时则必须强制类型转换。
举例说明:
我们知道C语言中函数返回值得类型必须确定,也就是一个函数只能返回其固定类型的值,那么如果需要根据不同输入值返回不同类型的结果怎么办?这样就可以: