一、void
1、void 是一种“抽象类型”,sizeof(void) = 0,故不允许使用void来定义变量。
例如:void void_variable
int func(void void_argument) 都是错误的。
2、void 作为函数返回值的限定
在C89标准中,如果某个函数没有返回值,那么返回类型为void。 例如void add(int a, int b)。
假如某个函数没有限定返回类型,例如 add(int a, int b),那么编译器默认的返回类型是整数类型。
void add(int a, int b){ /*error*/
return a + b;
}
add(int a, int b) { /*OK*/
return a + b;
}
3、void 作为函数的参数
如果某个函数没有参数,那么将其声明为void。例如int func(void)。
假如某个函数没有参数,但是没有声明为void,则int func(),则在调用func函数时,可以接受任何参数。
int func(void) {
return 0;
}
func(2); //error
func(2.5); //error
func(2, 'a'); //error
int func(){
return 0;
}
func(2); /*OK*/
func(2.5); /*OK*/
func(2, 2.5); /*OK*/
二、void*
1、void*可以声明变量,它是真实存在的。
void *p;
sizeof(void*) = 4
sizeof(p) = 4
sizeof(void) = 0;
2、void *能够指向任何类型的数据,也就是说任何类型的数据指针都可以赋值给void*指针。
int *p1;
float *p2
void *p;
p = p1; /* OK */
p = p2 /* OK */
3、void*指针是不能做计算的,因为不知道void*指向的数据类型。
/* error C2036: “void *”: 未知的大小 */
void *p;
p++;
本人现经营一个微信订阅号如下:欢迎大家关注,获取相关内容。
订阅号账号是:begginghard_zgh
订阅号名称是:读书笔记 By 张光辉