工作室 网站建设,app公司,莱芜网站优化团队,海外市场营销文章目录1 void的意义1.1 不存在void变量1.2 C标准1.3 void指针的意义1.4 通过void* 实现memset函数2 总结1 void的意义
void修饰函数的参数和返回值的时候#xff1a;
如果函数没有返回值应该将其返回值声明为void如果函数没有参数#xff0c;应该将函数的参数声明为void如…
文章目录1 void的意义1.1 不存在void变量1.2 C标准1.3 void指针的意义1.4 通过void* 实现memset函数2 总结1 void的意义
void修饰函数的参数和返回值的时候
如果函数没有返回值应该将其返回值声明为void如果函数没有参数应该将函数的参数声明为void如果没有参数并且不声明为void则函数参数默认是任意的比如main函数如果函数没有返回值但是不声明为void则函数默认返回值是int
如下图中的函数f()它的返回值没有声明为void默认是int参数可以是任意多个。 注意 void的是为了表示函数参数和返回值为无。从以上内容也可以知道C语言不是一门强类型语言。因为返回值不声明就默认可以是int 1.1 不存在void变量
在之前的文章中我们学过了C语言中的变量的意义【C语言进阶深度学习记录】一 数据类型的本质与变量的本质 知道变量的意义在于一段固定大小内存的别名。但是void无法表示这么一段固定大小的内存没有void的标尺无法在内存中裁剪出void对应的变量所以void无法声明变量。
比如下图的代码中标出error的两行代码
但是void* pv这一行没有标识错误。说明这样是可以的。后序会说明void指针的作用。
1.2 C标准
现在我们先要知道两个C标准
ANSI C标准标准C语言的规范扩展C标准不同的厂商在ANSI C标准上进行了扩充。
比如下面的代码在ANSI C标准中是会出错的但是在GNU的C标准中的gcc编译器是可以的且sizeof(void)的大小是1 1.3 void指针的意义
void指针在C语言中具有很大的作用首先我们需要知道
C语言规定只有相同类型的指针才可以相互赋值void* 指针作为左值时可以接收任意类型的指针void* 指针作为右值时需要对它进行强制类型转换 1.4 通过void* 实现memset函数
代码MemSet.c
#include stdio.hvoid MemSet(void* src, int length, unsigned char n)
{unsigned char* p (unsigned char*)src;int i 0;for(i0; ilength; i){p[i] n;}
}int main()
{int a[5];int i 0;MemSet(a, sizeof(a), 0);for(i0; i5; i){printf(%d\n, a[i]);}return 0;
}
编译运行结果为 2 总结
void是一种抽象的数据类型void类型不能用于定义变量void类型一般可以用于声明无参函数void类型也可以用于声明函数无返回值可以定义void* 类型的指针void* 指针可以接收任意类型的指针值