void和void*的详解:
void指该数据无类型,void*指该指针无类型,可以指向任意类型
1. 如果函数没有返回值,那么应声明为void类型;
2. 如果函数无参数,那么应声明其参数为void;
3. 如果函数的参数可以是任意类型指针,那么应声明其参数为void * ;
4. void不能代表一个真实的变量; 5.void 的主要作用是对函数的参数和返回的限定;
例: float *p1; int *p2; p1=p2; //此处将会报错,需要用强制类型转换。 换为void 就可以直接进行转换了。 void *p1; int *p2; p1=p2;
但是把 p1给p2就会出错了; void *p1; int *p2; p2=p1; //可以这样理解,所有的男人和女人都是人,但是你可以说所有的人都是男人吗?
下面给出void关键字的使用规则:
规则一 如果函数没有返回值,那么应声明为void类型
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型 。例如:
add ( int a, int b )
{
return a + b;
}
int main(int argc, char* argv[])
{
printf ( "2 + 3 = %d", add ( 2, 3) );
}
程序运行的结果为输出:
2 + 3 = 5
这说明不加返回值说明的函数的确为int函数 。
规则四如果函数的参数可以是任意类型指针,那么应声明其参数为void *
典型的如内存操作函数memcpy和memset的函数原型分别为:
void * memcpy(void *dest, const void *src, size_t len);
void * memset ( void * buffer, int c, size_t num );
这样,任何类型的指针都可以传入memcpy和memset中,这也真实地体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不