void关键字在C语言中有多重意思,用在不同的位置表示不同的意义
1、在函数定义时,放在括号中,表示函数没有参数,如:
int random( void ) //这时的void可以省略,写成:int random()也可以
{
return rand()%10; //返回一个10以内的随机整数
}
拓展:rand( )用于产生一个伪随机的无符号整数。
rand()%10表示将产生的随机数对10求余,结果为余数,整体表示产生0到9的随机数。
用rand() % 10;来生成 0 到 9 之间的随机数这种方法是不可取的,比较好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))
产生一个0到n之间的随机数
#include<stdio.h>
#include<stdlib.h> // rand函数所需得到头文件
void main()
{
int i,j;
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0)); // 产生0到10之间的随机数
printf("%d ",j);
}
}
2、在函数定义时,表示没有返回值,如:
void main( void )
{
printf("%d\n", random() );
}
**3、用在*前,表示任意类型指针,**如:
int compare( void *a, void *b )
{
int *pa=(int *)a, *pb=(int *)b; //强制转换成int *
return (*pa-*pb);
}
int compare( void *a, void *b )
{
char *pa=(char *)a, *pb=(char*)b; //强制转换成char*
return strcmp(pa,pb);
}
在很多头文件中有这样的函数原型声明,如:
void *malloc( size_t ) ;
//malloc函数原型的声明
拓展 :
size_t 全称size type,一种用来记录大小的数据类型。
通常用sizeof(XXX)操作,所得到的结果就是size_t类型。因为size_t类型的数据其实是保存了一个整数,所以它也可以做加减乘除,也可以转化为int并赋值给int类型的变量。
内核中先定义:typedef int size_t; 然后在特定的编码需要下用size_t来替代int(typedef为重定义函数)
类似的还有wchar_t就是wide char type,“一种用来记录一个宽字符的数据类型”。
ptrdiff_t就是pointer difference type,“一种用来记录两个指针之间的距离的数据类型”。