求高人解释 void,的含义和作用
发布网友
发布时间:2023-03-18 13:18
我来回答
共5个回答
热心网友
时间:2023-11-09 18:17
其它什么概念就不多说了,以下面几个例子来说明void的作用。
1.void的声明作用
void可用来声明一个函数,表示此函数无返回值或者是返回一个无类型的指针。例如:
void func_no_return();
表示此函数无返回值。函数体内有没有return 都可以,如果加return,则return后面不跟任何值。
void * func_void_return();
表示此函数返回一个无类型的指针,也就是说什么样指针类型都可以。例如下面函数的定义:
void * func_void_return()
{
int * a;
int b;
a = &b;
return a;
}/*返回int型的指针*/
void * func_void_return()
{
char * a ="dfasdfa";
return a;
}/*返回char型的指针*/
等等。
应用:void *malloc (Size) 函数,malloc函数为调用者分配一块Size大小的内存,并将此内存的地址返回给函数。至于此内存是什么样的类型,则可以由调用者自己确定。
2.void作为函数参数
int func_void_parameter(void)与int func_void_parameter()的区别。
前者表示此函数没有参数,如果你在调用此函数时,使用了参数,则编译器会报错误。你可以亲自试试。
后者也表示此函数没有参数,如果你在调用此函数时,使用的了参数,则有的编译器会报错或警告,也有的则视而不见。gcc则出现警告,cc则无视此错误。你也可以亲自编程测试。
int func_void_parameter(void * param_ptr);
表示此函数的参数指针,无类型,即什么样的指针类型都可以传入到此函数中。
应用: void * memcpy(void * Target, const void * Source, size_t n);
这是函数库中的内存拷贝函数,记得只是内存拷贝。如果参数不是void类型的,那此函数太无聊了。
3.void类型的指针不能进行算术运算。
void * ptr;
ptr++; ptr--;这都是不可以的。想想看,ptr++指的是运算后,将指针指向下一个值,而不是指针的值加1。
就先这么多,如果有问题再说。
热心网友
时间:2023-11-09 18:18
void 就是函数无返回值,程序,函数里面不需要写 return ...
如果是 int 函数这种有返回值的函数,需要在函数结束时 加上你要返回的值,
比如 return 0;
热心网友
时间:2023-11-09 18:18
int a(int x){
return 1;
} 定义函数类型的函数必须要用一个return做一个返回值,返回值的类型与函数类型相同
void a (int x){}
void的函数类型不需要一个返回值
热心网友
时间:2023-11-09 18:19
调用的时候void确实是无返回值。
但是在那个函数里面是指针进行运算那么就实际上可能修改了很多数据
因为指针是在地址上直接修改
热心网友
时间:2023-11-09 18:19
void 无返回值。
函数本身是不返回值的。