C++空指针
和无类型指针
的区别:
空指针
(null pointer)是没有指向任何地址的指针,任何一个指针都可以定义为空指针。
无类型指针
(void pointer)是指向某个地址,但是没有指定类型的指针。
void pointer(空指针
)源码
//定义空指针(nullptr)
int *p = 0;
int *q = nullptr;
//这里的p和q都是空指针,也就是说它们没有指向任何地方,而且,它们还可以比较是否相等:所有的空指针都是互相相等的。
int *r = NULL;
//NULL在许多C++标准库中被定义为空指针常量。
void pointer(无类型指针
)源码
D:\YcjWork\CppTour>vim c1310.cpp
#include <iostream>
/**
* void pointer(无类型指针)
*/
void increase(void *p, int size){
if(size==sizeof(char)){
char *cash = (char*)p;//将无类型指针p转换为char*指针
(*cash)++;
}else if(size==sizeof(int)){
int *ast = (int*)p;//将无类型指针p转换为int*指针
(*ast)++;
}
}
int main () {
char c = 'x';
int a = 1063;
increase(&a, sizeof(int));
increase(&c, sizeof(char));
std::cout << "a=" << a <<std::endl;
std::cout << "c=" << c <<std::endl;
return 0;
}
D:\YcjWork\CppTour>gpp c1310
D:\YcjWork\CppTour>g++ c1310.cpp -o c1310.exe
D:\YcjWork\CppTour>c1310
a=1064
c=y
D:\YcjWork\CppTour>
(全文完)