void类型的指针也可以转换为任意类型的指针,需要强制类型转换(实际上不需要,但是强制类型转换会增加代码的可读性,比如使用malloc函数的时候) void类型的指针不可以直接解引用(dereference),强制类型转换之后才可以正常访问void指针指向的内存单元 intmain(){ inta =10; // 指针p指向变量a, 但是p的类型仍然是void void...
例如,void func(int a, char *b)表示这个函数不返回任何值。 限定函数参数:当函数不允许接受参数时,同样需要使用void。例如,int func(void)表示这个函数不接受任何参数。接下来,我们来看看void指针的神奇之处。在C语言中,void指针可以指向任意类型的数据。这意味着你可以用任意类型的指针来赋值给void指针。例如: ...
从输出结果可以看出,无论是无类型的void指针还是int类型指针,指向的地址都是一样的: PS:void *就是一个不能动的“地址”,在进行&、移动指针之前必须转型为类型指针。 1.2 void指针的用途 这里我们看一下我们之前了解的memset函数,其第一个参数就是一个void指针,它可以帮我们屏蔽各种不同类型指针的差异。如下面...
在C 语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示。例如: int *p = NULL; 注意区分大小写,null 没有任何特殊含义,只是一个普通的标识符。NULL是一个宏定义,在stdio.h被定义为: #define NULL ((void *)0) 我们知道,变量一旦定义就要分配内存,指针变量也是如此。当你还不清楚要把指针...
voidmymemset(void*data,intnum,intbyteSize) { //char就是一个字节,而计算机中是以字节为单位存储的 char*ptr=(char*)data; inti; for(i=0;i 在这个mymemset函数中,我们利用void指针接收不同类型的指针,利用char类型(一个字节)逐个字节读取内存中的每一个字节,最后依次填充指定的数字。
void 在英文中作为名词的解释为 "空虚、空间、空隙",而在 C 语言中,void 被翻译为"无类型",相应的void * 为"无类型指针"。 void 似乎只有"注释"和限制程序的作用,当然,这里的"注释"不是为我们人提供注释,而是为编译器提供一种所谓的注释。 void 的作用 1.对函数返回的限定,这种情况我们比较常见。 2....
void a; 这行语句编译时会出错,提示“illegal use of type ’void’”。不过,即使void a的编译不会出错,它也没有任何实际意义。 1.1.void真正发挥的作用在于: (1) 对函数返回的限定; (2) 对函数参数的限定。 2、众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不...
void真正发挥的作用在于: (1) 对函数返回的限定; (2) 对函数参数的限定。 我们将在第三节对以上二点进行具体说明。 众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型 转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。
// 通用函数 int calc(int a,int b=-1,void *fun) { if(b==-1) { return ((FAC)fun)(a); //执行强制转换 }else { return ((FAC)fun)(a,b); } } calc(2,3,minus); // c++下对函数指针要求比较严格,不能将void*转化为void (*)() ...