1、void*指针是指针,也指向内存中某个地址的数据,但是内存中的数据类型是不确定的,所以使用时需要转换类型。 2、void的意思是无类型,是无类型指针,可以指向任何类型的数据。 因此void指针通常被称为通用指针或泛指针,或万能指针。 实例 代码语言:javascript 复制 #include<stdio.h>intmain(void){int num1=1;cha...
void*是 C 语言中的“通用指针”或“无类型指针”。它可以指向任何数据类型,而不要求明确指明所指向的数据类型。要理解void*的重要性,我们需要理解指针和数据类型之间的关系。 2.1void*的定义与含义 void*是一种可以指向任何类型数据的指针。例如,您可以将int,float,或者struct的地址赋值给一个void*类型的指针。 i...
万能指针其实就是void *类型的指针,而void *指针一般被称为通用指针或叫泛指针。它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,所指向的对象不属于任何类型。 因为void指针不属于任何类型,不可以对其进行算术运算,比如自增,编译器不知道其自增需要增加多少。 而对于char *型指针,自增一定是指针指向...
从输出结果可以看出,无论是无类型的void指针还是int类型指针,指向的地址都是一样的: PS:void *就是一个不能动的“地址”,在进行&、移动指针之前必须转型为类型指针。 1.2 void指针的用途 这里我们看一下我们之前了解的memset函数,其第一个参数就是一个void指针,它可以帮我们屏蔽各种不同类型指针的差异。如下面...
void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。 1 .void的作用 1) 对函数返回的限定 a) 当函数不需要返回值时,必须使用void限定。例如: void func(int, int) 2) 对函数参数的限定 a) 当函数不允许接受参数时,必须使用void限定。例如: int func(void) ...
也就是说,void*类型的指针可以接受任意类型的指针 但是不能够进行解引用操作,也不能进行加减运算 需要注意的是,void* 即使在接收某一具体类型的指针后,它的类型依然是void*,我们仍然无法对其进行解引用操作,需要进行强制类型转换才可以。 由于空指针的特殊性,我们一般将其运用在函数参数里,用以接收各种类型的参数。
//void *可以是任意类型的数据,任意类型都可以存储,也可以转换任意类型 int main(){ //例1:将普通指针变量赋值给void*指针并打印输出 int pa = 100; int *p = &pa; void * v = p; printf("v=%d \n",*((int*)v)); //例2:通过void*指针修改变量的值 ...
在C语言中,void* 指针是一种特殊的指针类型,它可以指向任何类型的数据。这种灵活性使得 void* 指针在处理不同类型的数据时非常有用,尤其是在需要编写通用函数或者处理未知类型数据的情况下。 void* 指针的特点包括: 可以存储任何类型的指针; 不能直接进行指针运算; 在使用时通常需要进行类型转换。 让我们通过一些...
void * 指针虽名为无类型指针,但可以指向任何一种类型的数据,即其他类型指针的指可以不通过强制转换直接赋给 void * 指针。在 C 语言当中,对指针类型的转换要求不是那么严苛,可以不通过强制转换就可以进行相互间的赋值。虽然编译器(gcc 6.3版本)不会显示有错误,编译照常会通过。只是会给出类似下面的警告:...
而对函数print的函数指针是 :void (*p)() ,其实就是用(*p)替换函数名,就是该函数的函数指针,所以去掉变量名剩下的就是指针的类型,即:void (*)() ,然后pVoid 调用函数的方式: (*pVoid)(); 然后把类型拿过来强制转换即可得到:(*(void(*)())pVoid)(),明白了吧!就这么简单。