网站首页 > 技术文章 正文
在文章 嵌入式Linux开发《C语言专题(十:彻底搞懂“关键字”const)》和嵌入式Linux开发《C语言专题(十:彻底搞懂“关键字”static)》和嵌入式开发《C语言(十:5分钟搞懂“关键字”register&extern)》和嵌入式开发《C语言(十:5分钟搞懂“关键字”sizeof)》和嵌入式开发《C语言(十:搞懂typedef“关键字”so easy)》和嵌入式开发《C语言(十:2分钟搞懂关键字volatile)》中对关键字const、static、register、extern、typedef和volatile做了详细的总结。这篇文章将详细介绍void关键字的使用。通过这篇文章将学会看懂和使用void关键字。
void不是“空”的意思,是“万能”的意思。
void与普通变量的结合
void修饰普通变量 也就是这个变量的类型是任何类型,比如void a; a=10;不过几乎没有人这样做,这样写在有些编译器中也是出错的。如下图所示:
因此我们在定义变量时都会给一个确定的类型。同时系统会给这个变量分配相应的内存空间,如果定义为void类型变量,系统就不知道要给这个变量分配多大的内存空间。因此这样写是错的。同样,void*修饰变量也是类似。
void与函数的结合
void在自己定义函数中作为参数和返回值的使用。如果函数没有返回值,那么可以将这个函数的返回设置为void类型。比如
void fun(int i) { printf("i = %d \n", i) }
如果函数有返回值,但是在定义的时候没有返回类型,那么默认的返回值的类型为整型。如果函数没有参数应在函数名后的小括号内写上void,常见的int main(void)或者比如
int fun(void) { int i = 10; return i; }
void *指针与函数的结合
void *修饰指针变量 表示这个变量可以指向任何类型的指针。
如果在实际的开发中,如果我们所需要的参数或者是返回值为任意一种指针类型,那么可以将参数或者返回值写成void *形式。比如我们常用的memcpy memset函数都是这样做的。这些内存操作函数只管所需要的空间大小,不管申请后这些空间是用来存储int类型还是char类型亦或是其他类型额数据。这样也就保证了这些内存函数使用的范围更广。这里的参数个返回值void*类型就表示可以是任何需要的类型。
void *memcpy(void *dest, const void *src, size_t n);
void *memset(void *s, int c, size_t n);
以上就是所总结的void的用法,这些都是必须要掌握的,上机实战,理解才是王道。
喜欢的话给个点赞 、转发,更多精彩内容可以关注此头条号:嵌入式软硬件开发 或者加入嵌入式C语言交流群 932029691 相互交流,共同成长。
- 上一篇: C语言中什么是变量?如何定义变量?
- 下一篇: 深入剖析C语言中的神秘字符——NULL
猜你喜欢
- 2024-10-26 C语言、嵌入式项目中一些常用知识及技巧第一弹
- 2024-10-26 C语言编程:最常见 7 道C语言面试题,还是有不少人弄不明白?
- 2024-10-26 初识C语言:简介、环境搭建、第一个HelloWorld
- 2024-10-26 C|volatile关键字使用细节及适用场合
- 2024-10-26 C语言干货:函数知识详解(变量的作用域,全局变量,静态变量)
- 2024-10-26 小白入门C语言20问20答2(新手c语言)
- 2024-10-26 C语言的简单了解及学习2(c语言的入门知识)
- 2024-10-26 C 语言基本语法(c语言的基础语法)
- 2024-10-26 C语言数据怎么描述?最全面解析,C语言基础教学档案!编号零零五
- 2024-10-26 C语言void关键字的高级玩法,6个样例代码告诉你
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)