请教void * 的作用和用法
展开全部
在进行类库设计时,因为
不确定类库的使用者具体使用什么类型的指针。
此时都用void*指针,
而C++的类型转转机制,可以把void*类型指针,转换成为
必须的指针类型。具体转换有编译器实现!
命令查看一个void *型的变量的时候,提示为:"attempt to dereference a generic a pointer " ,我该怎样才能查看这一类型的变量的内容呢?
单独void*变量无法查看起内容,你必须强制类型转换后才可以看到,
比如转换成为int*,或者char*什么的编译器才可以按这种要求解析,
指针地址内的信息。
很简单的一个例子
char *p = "asdfasdf";
int *p1 = (int*)p;
这时候编译器在解析p1的内容时是使用整形解析方法。
cout<<p;
cout<<p1;
打印的结果是
cout<<p正常输出
cout<<p1输出的是一个地址
在编译器查看时,我们也会发现p1指向的是一个字符串类型。
如果我们对
wwo
我们void *p = "asdfas"//编译器会给我们声明为string类型
void *p= 2;
不确定类库的使用者具体使用什么类型的指针。
此时都用void*指针,
而C++的类型转转机制,可以把void*类型指针,转换成为
必须的指针类型。具体转换有编译器实现!
命令查看一个void *型的变量的时候,提示为:"attempt to dereference a generic a pointer " ,我该怎样才能查看这一类型的变量的内容呢?
单独void*变量无法查看起内容,你必须强制类型转换后才可以看到,
比如转换成为int*,或者char*什么的编译器才可以按这种要求解析,
指针地址内的信息。
很简单的一个例子
char *p = "asdfasdf";
int *p1 = (int*)p;
这时候编译器在解析p1的内容时是使用整形解析方法。
cout<<p;
cout<<p1;
打印的结果是
cout<<p正常输出
cout<<p1输出的是一个地址
在编译器查看时,我们也会发现p1指向的是一个字符串类型。
如果我们对
wwo
我们void *p = "asdfas"//编译器会给我们声明为string类型
void *p= 2;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询