你好,想请教void * 的作用和用法?

请教void * 的作用和用法


慕丝7291255
浏览 308回答 2
2回答

PIPIONE

在进行类库设计时,因为不确定类库的使用者具体使用什么类型的指针。此时都用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;&nbsp;

白衣染霜花

一般这个定义用在形参 或实参传递上表示,这个指针为任意类型指针如:int comp( void *a, void *b){if ( *a > *b )return 1;if ( *a==*b)return 0;return -1;}调用:int a,b;a=3,b=5;printf("%d", comp( (void*)&a, (void *)b) );也可以是:char a,b;a='A',b='B';printf("%d", comp( (void*)&a, (void *)b ) );或者:也可以是:double a,b;a=1.1,b=1.2;printf("%d", comp( (void*)&a, (void *)b) );
打开App,查看更多内容
随时随地看视频慕课网APP