1、void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据。和用int表示指针异曲同工,只是更明确是“指针”。 因此void*只能表示一个地址,不能用来&取值,也不能移动指针,因为不知道多少字节是一个数据单位。 2、void *就是一个不能动的“地址”,在进行&、移动指针之前必须转型...
void*pvoid ;//它没有类型,或者说这个类型不能判断出指向对象的长度 pvoid = pint ;//只获得变量/对象地址而不获得大小,但是不能 pint =pvoid; 2.2如果要将pvoid赋给其他类型指针,则需要强制类型转换如: 1 pint = (int*)pvoid;//转换类型也就是获得指向变量/对象大小 ...
C语言是弱类型语言。所有也就不存在判断类型的说法。 //这样的指针就是代表一个内存地址,没有类型信息。 //连边界都不包含 void *p #include <stdio.h> struct my_struct { int a; int b; }; int main () { struct my_struct *p = malloc(sizeof(struct my_struct)); p->a = 1; p->b = 2...
1. 双指针 双指针(二级指针),是指针的指针。 2. void指针 void指针:万能指针,代表任意类型的指针。 malloc分配堆内存时,由于无法确定内存存储类型,所以可以使用void*代表任意指针类型。 3. 函数指针 函数指针是指向函数的指针变量,每个函数都有一个入口地址,指针变量中保存函数的入口地址 每一个函数都有一个入口...
void 定义的函数是没有返回值的,因此一般是可以不用加上 return 关键字。不过,即便加上也不会影响编译。当然,如果函数里面有多种可能,需要中途结束。比如分支判断后结束,那么就要使用 return 关键字来终止函数。例如:void 函数作为一个没有返回值的函数,既无法重新使用其他数据类型定义的变量来接收函数的返回值...
void 被翻译为"无类型",相应的void * 为"无类型指针"。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。void 的作用 1.对函数返回的限定,这种情况我们比较常见。2.对函数参数的限定,这种情况也是比较常见的。一般我们常见的就是这两种情况:(1)当函数不需要返回值值时,...
而通过指针变量,可以解决这类问题:如果对上述代码中的指针p加1的话,实际上是p+sizeof(int),一次性增加了4个存储单元。而void*是一种特别的指针,因为它没有指向的类型,或者说不能根据这个类型判断出指向对象的长度。 任何指针(包括函数指针)都可以赋值给void指针。
相信大家已经见识过C语言的厉害之处,但这也是最烧脑的地方,即高自由度产生的高不可控性。假如有这样一种场景:功能差不多,但受限于参数类型,写了多个函数。此时可以使用void *类型传递参数,然后在函数内部对类型进行判断,切换到不同数据类型处理不同的数据。
void 中文翻译为”无类型”,有的也叫”空类型”。常用在程序中对定义函数的参数类型、返回值、函数中指针类型进行声明。 二、用法 首先应该注意一点的是void类型是不同于其他常见类型的,即void 类型不能够用来申明变量和常量。因为我们申明变量的时候需要明确告诉编译器,该变量是什么类型,比如说是int 或 char...
用这个函数void *memcpy(void *dest, const void *src, int n);功能为:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中 你只需要将a内存地址中的数据拷贝到p中,字节数为a类型的字节数就行了 例如float a=12.2;void* p;memcpy(p,&a,sizeof(a));这样...