空类型指针(void *)的理解
2016-08-02 14:54
232 查看
原文:http://blog.chinaunix.net/uid-26435987-id-3133567.html
void指针是空类型指针,它不指向任何类型,即void指针仅仅是一个地址,所以空类型指针不能进行指针运算,也不能进行间接引用(因为指针运算和间接引用都需要指针的类型信息)。
例如: void * p; //仅仅表示p存放一个地址
p++; //error:+、-运算离不开指针类型
*p=20.5; //error:访问p指向的变量空间需要变量类型信息
由于其他指针都包含有地址信息,所以将其他指针的值赋给空类型指针是合法的;反之,将空类型指针赋给其他指针则不被允许,除非进行显式转换。
例如: int a=20;
int* ptr=&a;
void *p=ptr; //OK 将整型指针值赋给空类型指针(只获得变量/对象地址而不获得大小 )
ptr=p; //error 不能将空类型指针赋给其他指针
ptr=(int*)p; //OK 显式转换,void指针赋值给其他类型的指针时都要进行转换
void指针是空类型指针,它不指向任何类型,即void指针仅仅是一个地址,所以空类型指针不能进行指针运算,也不能进行间接引用(因为指针运算和间接引用都需要指针的类型信息)。
例如: void * p; //仅仅表示p存放一个地址
p++; //error:+、-运算离不开指针类型
*p=20.5; //error:访问p指向的变量空间需要变量类型信息
由于其他指针都包含有地址信息,所以将其他指针的值赋给空类型指针是合法的;反之,将空类型指针赋给其他指针则不被允许,除非进行显式转换。
例如: int a=20;
int* ptr=&a;
void *p=ptr; //OK 将整型指针值赋给空类型指针(只获得变量/对象地址而不获得大小 )
ptr=p; //error 不能将空类型指针赋给其他指针
ptr=(int*)p; //OK 显式转换,void指针赋值给其他类型的指针时都要进行转换
相关文章推荐
- 深刻理解指针类型
- 对引用和指针使用以及函数返回引用和指针类型的理解
- 深入理解数据类型、变量类型属性、内存四区和指针
- int (*(*fp)(void *))[10]; 指向函数的指针类型
- 从一个简单例子来理解js引用类型指针的工作方式
- 对引用和指针使用以及函数返回引用和指针类型的理解
- 如何理解函数形参为指针和引用类型的参数传递
- void类型和void *指针类型(网上摘抄总结)【转】
- 从一个简单例子来理解js引用类型指针的工作方式
- 对引用和指针使用以及函数返回引用和指针类型的理解
- 深入理解 C++ 指针(六)---指针和结构类型的关系
- 深入理解C指针四(指针类型转换)--By kmalloc
- 深入理解C指针之三(指针和结构类型的关系)--By kmalloc
- 对C++中指向数组类型的指针的理解
- 理解c和c++的复杂类型声明 (掺杂指针)
- 对引用和指针使用以及函数返回引用和指针类型的理解
- 关于内存和指针操作,数据类型转换本质的理解
- 技巧:用 C 语言实现程序的多态性: C中只有两种类型int 和void *, 万能指针void *
- typedef int (* func)(int ,int ) 定义函数指针类型 的理解
- 函数形参为指针和引用类型的传递理解