C语言的语法极其简洁,即使是初次接触编程语言的初学者也能很快学完它的语法。不过,C语言也是一门“灵活得过了头”的编程语言,对于很多初学者来说,编写C语言程序就好像拿着一堆最基本的砖块,要修建一座大厦一样,茫然找不到方向。

茫然找不到方向

奇怪的C语言代码

对于初学者来说,阅读项目源代码是学习和巩固C语言编程能力的一个好方法——从前辈们的一些优秀C语言项目中,我们能够学到很多编写程序方面的思考方式,也就是一些程序员所谓的“编程思维”,看得多了,编写C语言程序自然就手到擒来了。

不过虽然C语言的语法简单,但是我们总会看到一些令人迷惑的代码,例如下面这个函数,它来自某个开源项目,为了讨论主题,我将一些不相关的细节略去了:

void *fun(void *ud, void *ptr, int size){ (void) ud; (void) size; // 其他代码,未用到 ud 和 size 参数 ...}

fun() 函数中省略掉的代码没有使用到 ud 和 size 参数,这里有两个问题:一是既然用不到这两个参数,为什么不删去它们呢?再就是两个参数前的 (void) 类型转换有什么用呢?

为什么不删除多余参数呢?(void) 类型转换有什么用呢?

首先考虑第一个问题

前文提到 fun() 函数来自一个C语言程序开源项目,该项目比较复杂,但是我们知道再复杂的程序项目也是一行一行代码敲出来的,而且,在后续的开发中,可能会修改之前的设计。明白这一点,要回答第一个问题就简单了。

可能在之前的设计中,fun() 函数是用到了 ud 和 size 参数的,只是后来的设计发现 fun() 函数不必使用这两个参数,但是发现整个C语言项目由大量使用 fun() 函数的代码。

进制转换c语言代码_奇怪的C语言代码,有些函数在变量前加上(void)是什么类型转换?...相关推荐

  1. 进制转换二进制转八进制_将二进制数制转换为八进制数制

    进制转换二进制转八进制 Prerequisite: Number systems 先决条件: 数字系统 To convert binary numbers into octal numbers, we ...

  2. C语言中用栈实现进制转换,利用栈实现进制转换问题

    进制转换问题 建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换. 输入 输入只有一行,就是十进制整数. 输出 转换后的二进制数. 样例输入 10 样例输出 1010 十进制怎么转为二进制?十进制 ...

  3. 2021微软暑期实习机试,负进制转换,十进制转-2进制

    2021微软暑期机试题,进制转换 一 前言 二 解题步骤 2.1 题目描述 2.1.1 简述前两题 2.1.2 2.2解题思路 2.3代码思路 三 问题和启发 3.1 遇到的一些问题 3.2 考虑-3 ...

  4. Java实现任意进制转换拓展进制转换计算器

    JAVA实现蓝桥杯基础练习十六进制转换八进制-----------拓展进制转换计算器 这个题目我浏览了大量的道友的文章发现十分麻烦,但仍然从其中收益菲薄,所以在这里分享一下我认为最好的代码 impor ...

  5. 进制转换(m 进制 x 转换为 n 进制的数)

    摘要:以前写的进制转换一般不会考虑大数问题,举个例子就是如果16进制的FFFFFFFFF就是16^9是一个非常大的数,这个时候就需要用数组来存. 题目: 将M进制的数X转换为N进制的数输出. 输入 输 ...

  6. c语言进制转换实验报告,c语言_各种进制转换.docx

    c语言_各种进制转换.docx c 语言 各种进制转换 计算机中常用的数的进制主要有二进制.八进制.十六进制. 2 进制,用两个阿拉伯数字0.1: 8 进制,用八个阿拉伯数字0.1.2.3.4.5.6 ...

  7. c++进制转换代码_轻松实现C/C++各种常见进制相互转换,你还不会你就落后了

    这篇文章主要介绍了轻松实现C/C++各种常见进制相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 其它进制转为十进制 在实 ...

  8. c语言ae16进制转换,进制转换工具下载_16进制2进制转换with曼彻斯特编码 1.3 免费版_极速下载站_软件下载...

    16进制2进制转换with曼彻斯特编码是一款简单易用的转换工具,可以对16进制.2进制.曼彻斯特算法.10进制等进行互转,支持802.3曼彻斯特.标准曼彻斯特.差分三种转换模式,支持曼彻斯特编码每8位 ...

  9. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换

    描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...

最新文章

  1. C++:传值与传址的区别以及引用的使用
  2. [开发笔记]-jQuery获取radio选中项的值
  3. html+js浏览器检测
  4. thymeleaf如何迭代遍历,如何判断
  5. mysql分组区某列最后一条_[MySQL]MySQL数据库如何按某列分组排序后查询每个分组的最后一条数据?...
  6. BBC英语-drama
  7. Linux VFS的主要的数据结构
  8. 「学习记录」《数值分析》第二章计算实习题(Python语言)
  9. 如何系统的自学python-作为小白,如何系统的自学PythonWeb开发?
  10. java日期减去天数得日期_Java日期添加天数,减去天数,日历
  11. AcWing 145.超市(二叉堆)
  12. SpringBoot 分布式session
  13. python入门容易进阶难_为什么Python入门容易,精通却很难!Python进阶之路!
  14. 暴力猴简单脚本 - 去除右键菜单、文本选择限制
  15. oracle 12c PDB 数据库 和mybatis 数据库连接池 的连接问题
  16. excel 如何冻结多行多列
  17. ios苹果开发者账号申请流程(公司类型)
  18. 如何使用Python解锁星河远征军的科幻旅途
  19. Unity 实用小技巧(更新ing)
  20. html数据线如何使用,揭秘数据线DIY详细步骤

热门文章

  1. apk图标存放位置_安卓系统下安装完apk程序后,具体的文件夹位置在哪里呢?
  2. Oracle为什么装在XP系统,重装xp系统后oracle恢复方法
  3. et超排真正免狗能用版 真正好用的东西_真正合格小户型,收纳都特别能“装”...
  4. C++ Qt全局异常处理器_QT教程
  5. mysql binlog线程恢复_使用MySQL SQL线程回放Binlog实现恢复
  6. ns-3文件编译出错总结
  7. 光模块常见故障与使用注意事项详解
  8. 带网管工业交换机跟不带网管交换机的差别
  9. 【渝粤题库】陕西师范大学720001 分子生物学
  10. TTL电平、CMOS电平、RS232通信电平的概念及区别