C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
很多单片机初学者问我的第一句话都是:怎样才能学好单片机?今天,我就结合我自己是如何开始学习单片机的,如何开始上手,又如何开始熟练等话题与大家分享。
Matlab被禁,不代表开源的Python和Julia就可以随便用,甚至祖宗辈的C语言也不一定安全。就像Arm新技术被禁止华为使用,不代表华为就能自由使用所谓开源的RISC-V,开源技术的主导者仍然是美国,而且RISC-V从加州大学伯克利分校孵化成商业项目的第一个金主就是美国国防部旗下的国防高级研究计划局(DARPA),用业内人士的话说就是:要禁止中国人使用RISC-V简直比禁Arm理由更充分。
半个月前这位同学找到我,他当时准备参加面试,就和我聊了很多,总体感觉这位同学基础还是不错。我那时候也就顺便给他找了一些C语言、Linux等等笔试题,后面也教他稍微修改过几次简历。总体来说,这位同学能有现在的三个比较好的offer很大原因在于他自身的基础不错,肯付出、肯努力的结果。前几天和我分享了他参加面试遇到的一道c语言笔试题,他说当时有点整不会了,竟然做错了,然后面试官也让他自己回去想想。因为大部分题做的还可以,最后也通过了面试。题目是这样的:
其实在 c++语言里面const修饰的才算是一个真正的常量,在 c 语言中 const 可以说是个“冒牌货”。为什么会这样?其实是 c++ 编译器对 const 进行了加强,当 c++ 编译器遇到常量声明时,不会像 c 语言一样给这样const对象单独分配内存,c 语言一般是放在只读数据区,而 c ++ 编译器是把const对象放在一个符号表里面(我个人觉得放在符号表里面的其中一个原因可能是想减少一些存储操作次数),至于符号表是属于内存布局(文章:你该知道你写的程序的内存布局)中的哪一块,我也不知道,写 c++ 编译器的人才知道。
昨天群友发文询问,为什么C语言里bool似乎占用4Byte,给bool赋值后,它后面的3个字节 内容也被修改了,并且她还强调代码没有经过编译器优化(-O0是关闭优化的意思)。
今天分享一个C语言宏定义小技巧,从语法上来看比较简单,不过一旦真正领悟到其精妙之处不仅可以简化代码、还能提高代码的可扩展性。X-MACRO宏技术的核心在于灵活的应用#define与#undef,对于玩C语言的伙计#define是再熟悉不过了,但#undef却鲜有人在实际的开发过程中熟练使用,基本上都是#define走天下。那#define的作用域是怎样的呢?其作用范围都是从宏定义处到文件结束,不管函数内外均可以随意使用。那一不小心使用#define重复定义相同的宏又会怎样呢?对于大部分编译器会报重复定义警告,但也有小部分编译器采用最近的宏定义直接通过,所以稍不留神就把bug引入到了代码中。其实对于C语言编程素养良好的工程师们多会使用#undef来限制宏定义的作用范围,即取消宏定义,以免造成宏泛滥。
最近看到APP上,给我推送了很多类似的回答,借此机会,也想着重新审视一下自己的学习历程,以及结合自身和大牛,分享一些学习经验,希望对大家有所启发和帮助。
SQLite是一个跨平台的轻量级数据库,支持C/C++开发,可用于嵌入式中,关于C/C++使用SQLite的简单实例,可参考这篇:“玩转SQLite6:使用C语言来读写数据库”,本篇来继续介绍SQLite的基础运算符与表达式。
在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。
C语言使用函数调用,我们再熟悉不过了,但是函数调用在内存中究竟发生了什么真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。
有个粉丝关于条件编译的问题,程序一直编译报错。我整理了关键的部分,下面代码是头文件中的定义。
首先要看英文和C语言的关系,有多大层度是需要英文的支持。我们都知道C语言中一共有32个关键词,控制语句仅有9种,也就是说只需要掌握以上内容就可以对C语言进行应用,对于一些复杂的指针等更合英文没有关系。我相信短短的32个关键词根本难不倒各位同学吧。对于C语言的资料遍地都是,随着时间的推移越来越多的大神分享自己学习C语言的方法,将各种博客、文章、视频分享给大家,因此在学习C语言的时候根本不缺资料,作为一种主流的编程语言,是任何编程语言学习的前提。因此在资料方面根本不需要担心。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash,oops等棘手问题,一般大家都会用gdb,objdump或者addr2line等工具分析pc位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列backtrace或者st...
点击蓝字关注我们请把努力当成一种习惯,而不是三分钟热度。每一个你羡慕的收获,都是努力用心拼来的。相信人生不会亏待你。12月6日华清远见武汉中心迎来了嵌入式21111班的开班典礼班主任介绍班级班规无规矩不成方圆,班级班规的制定是为了让学生更加严于律己,也是为了方便班主任老师对学员进...
一直觉得C语言较其他语言最伟大的地方就是C语言中的指针,有些人认为指针很简单,而有些人认为指针很难,当然这里的对简单和难并不是等价于对指针的理解程度。为此在这里对C语言中的指针进行全面的总结,从底层的内存分析,彻底让读者明白指针的本质。01 指针变量首先读者要明白指针是一个变量,...
提到C语言,很多人的第一反应是:C语言,不都过时了?还有必要研究吗? 当然有必要。用一个词来形容:C生万物。听起来有点浮夸,但也没说错。现今这个世界上,几乎所有重要的软件都跟C有关系: 主流操作系统是C写的,绝大多数语言的编译器也是C写的,数据库、网络、硬件驱动、服务器应用等等,...
▼点击下方名片,关注公众号▼欢迎关注【玩转单片机与嵌入式】公众号,回复关键字获取更多免费资料。回复【加群】,限时免费进入知识共享群;回复【3D封装库】,常用元器件的3D封装库;回复【电容】,获取电容、元器件选型相关的内容;回复【阻抗匹配】,获取电磁兼容性、阻抗匹配相关的资料回复【...
▼点击下方名片,关注公众号▼欢迎关注【玩转单片机与嵌入式】公众号,回复关键字获取更多免费资料。回复【加群】,限时免费进入知识共享群;回复【3D封装库】,常用元器件的3D封装库;回复【电容】,获取电容、元器件选型相关的内容;回复【阻抗匹配】,获取电磁兼容性、阻抗匹配相关的资料回复【...