void指针?什么是void指针
大家好,如果您还对void指针不太了解,没有关系,今天就由本站为大家分享void指针的知识,包括什么是void指针的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
C语言void 指针有什么用
void
*
以定义一个指针变量,但不说明它指向哪一种类型数据.
1.
传参:通用类型
可以作为函数模板,链表等参数的通用参数。在使用时,只需要强制类型转换就可以。
2.强制类型转换
有时候由于重载等的干扰,导致需要转换成void
*,来进行取地址。
例如,(void
*)obj.member,就可以取到member的地址;直接&(obj.member)取到的实际上是obj的开始地址。
3.指向0的地址
(void
*)0,指向全是0的地址,相当于NULL。
非void类型显式转换为void类型表达式,用于避免一些代码静态检查工具的警告。
c语言的,void指针不能++,那该怎么改
void*表示任意类型指针,或叫不确定类型指针
当指针变量进行++时,会后移相应类型数据的宽度,如:
char*p; p++向后移动一个char类型空间,即:1字节
int*p; p++向后移动一个int类型空间,即:4字节
而void*p;类型不确定,所以,程序无法判定要怎么改变指针变量的值。
vc6报错:error C2036:'void*': unknown size
因此,程序要根据实际变量数据类型进行强制转换后才可以使用,而且不能使用void*变量本身!如:
//本代码没有实际意义,仅在说明问题。该代码在vc6编译不通过!
voidprt(void*str)
{
while(*((char*)str)!='\0')//强制转换类型,进行数据引用
{
putchar(*((char*)str));
str++;//errorC2036:'void*':unknownsize
}
}
修正后的代码(所有系统均编译运行正常):
voidprt(void*str)
{
char*s=(char*)str;//重新定义一个实际类型数据指针变量,指向该地址
while(*s!='\0')
{
putchar(*s);
s++;
}
}
什么是void指针
void被翻译为"无类型",相应的void*为"无类型指针"。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。
void的作用
1、对函数返回的限定,这种情况我们比较常见。
2、对函数参数的限定,这种情况也是比较常见的。
一般我们常见的就是这两种情况:
(1)当函数不需要返回值值时,必须使用void限定,这就是第一种情况。例如:void func(int a,char*b)。
(2)0当函数不允许接受参数时,必须使用void限定,这就是第二种情况。例如:int func(void)。
扩展资料
c语言运算符号:
1、算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
c语言void的意思是什么
c语言中,void的意思是“无类型”,相应的“void*”为无类型指针,常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明,其作用是对函数返回和参数的进行限定。
void可以作为函数返回值类型,有void就代表没有返回值。在定义的函数中,有的函数前是void有的是int或者float等等数据类型,此时它们被称为函数的返回值类型。当返回值类型为void时,称这个函数返回空,或者这个函数无返回值。
c语言void的用法特点:
使用void去修饰指针的时候,这种通用类型的指针可以很方便的和其他类型的指针之间进行相关转换。void另一个重要的应用则就是跟函数进行结合主要有以下两个方面的应用:对函数返回的限定;对函数参数的限定。
void类型不能够用来申明变量和常量,因为申明变量的时候需要明确告诉编译器,该变量是什么类型,比如说是int或char类型,这样编译才好为这个变量去分配存储空间。总的来说,void应用最广泛的就是跟指针结合,而void和指针的结合也大大扩展了指针的可能性。
文章分享到这里,希望我们关于void指针和什么是void指针的内容能够给您带来一些新的认识和思考。如果您还有其他问题,欢迎继续探索我们的网站或者与我们交流,我们将尽力为您提供满意的答案。