void*作为 左值 可以 被赋值 任意类型的 指针 ; void*作为 右值 赋值给其它类型的指针类型变量时 , 必须将 该指针强转为其它类型 ; 最常见的是使用malloc()函数申请内存时 , 其返回一个void *类型的指针 ; 代码语言:javascript 复制 void*malloc(unsigned int size); 如果分配内存完毕 , 将其赋值给一个其它...
void*类型定义的指针变量只接收对象的地址,没有对象的类型概念。所以该指针变量是不能直接用;“*指针变量”去访问对象的,只能经强制类型转换后才能“间接”访问:*(type*)指针变量,必须给出正确的type!
CHAR*strdata = (char*)_data; std::string* strret = (std::string*)_ret;//指针变量,进来的时候传数据长度,返回获取的图片URL intiBufSize =atoi((*strret).c_str()); returnGetCapturePicUrl(strdata, iBufSize, *strret); } return0; } 调用的时候,传入void指针的类型是什么,什么就强制转换成什...
void 指针类型众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。 例如: float *p1; int *p2; p1 = p2; 其中p1 = p2语句会编译出错,提示“'=' : cannot convert from '...
void指针使用规范 ①void指针能够指向随意类型的数据,亦就可以用随意数据类型的指针对void指针赋值。比如...
p1 = p2;或p1 = (void *) p2;void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint= (int *)pvoid;希望能帮助你 ...
如果不知道指针将会指向什么类型的数据,那么可以使用void类型的指针。void类型的指针可以指向任何的对象的地址: intdata=3;void*pointer=&data;/// 均可以得到data的地址printf("%p\n",pointer);printf("%p\n",&data); 但是,并不能在执行语句中使用“*pointer”访问pointer指向对象的值。
在这个场景下,我们实际上不需要将uint32值转换为void*类型,而是需要将void*指针转换为uint32_t*指针,以便进行赋值操作。 通过指针将值赋给指向的内存: c *(uint32_t*)ptr = value; // 将value的值赋给ptr指向的内存 完整的代码示例如下: c #include <stdio.h> #include <stdlib.h> ...
你把这个不确定的地址强制转化后赋值给结构体指针变量temp,赋值语句本身没有什么语法错误,你把这个地址打印出来也是没有什么问题的,但是如果你对这个地址的内存单元进行赋值操作,修改了这个内存单元的内容,那么可能会造成严重的后果。比如说这个地址所属的内存单元是操作系统的,你修改它的值,就有可能...