【C语言】一道简单但易错的C语言面试题 题目:分析以下代码,它的运行结果是? #include <stdio.h> int main(void) { int i = -1; if (i = 0) printf(" 2019-09-30 C语言 C语言 【C语言】易错、经典问题:return不可返回指向栈内存的指针 预备知识:内存的分类C/C++程序占用的内存分为两大类:静态存储区与动态存储区。其示意图如下所示: 数据保存在静态存储区与动态存储区的区别就是:静态存储区在编译-链接阶段已经确定了,程序运行过程中不会变化,只有当程序退出的时候 2019-09-06 C语言 栈指针 【C语言】代码优化的一些经验及小技巧(四) 无限循环优先选用for(;;),而不是while(1)在C语言中,最常用的无限循环语句主要有两种:while(1)和for(;;)。从功能上讲, 这两种语句的效果完全一样。那么,我们究竟该选择哪一种呢? 其实,for(;;)语句运行速度要 2019-08-30 C语言 代码优化 【C语言】代码优化的一些经验及小技巧(三) 循环展开简单的循环可以展开以获取更好的性能,但需要付出代码体积增加的代价。循环展开后,循环计数应该越来越小从而执行更少的代码分支。如果循环迭代次数只有几次,那么可以完全展开循环,以便消除循坏带来的负担。例如: for(i=0; 2019-08-29 C语言 代码优化 【C语言】代码优化的一些经验及小技巧(二) 函数相关1、参数的书写要完整参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void填充。例如: voidSetValue(intwidth,intheight); // 良好的风格 2019-08-28 C语言 代码优化 【C语言】代码优化的一些经验及小技巧(一) 一、变量与值得比较1、布尔变量与零值的比较不可将布尔变量直接与 TRUE、 FALSE或者 1、 0进行比较 。据布尔类型的语义,零值为“ 假”(记为 FALSE),任何非零值都是“ 真”(记为TRUE)。 TRUE的值究竟是什么并没有统 2019-08-27 C语言 代码优化 【C语言笔记】goto语句 关于C语言的goto语句存在很多争议,很多书籍都建议“谨慎使用,或者根本不用”。这里先不做过多的讨论,存在即合理,既然是C语言中的一个知识点,我们还是有必要学会使用。先看一些goto如何用: 一、goto的基本语法goto语句有两部分:g 2019-08-22 C语言 goto语句 【C语言】assert怎么用? 一、什么是assert()?编写代码时,我们总是会做出一些假设,断言(assert)就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。 断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何 2019-08-12 C语言 C语言 【C语言】联合体 一、什么是联合体?在C语言中,变量的定义是分配存储空间的过程。一般的,每个变量都具有其独有的存储空间,那么可不可以在同一个内存空间中存储不同的数据类型(不是同事存储)呢? 答案是可以的,使用联合体就可以达到这样的目的。联合体也叫共用体,在 2019-08-01 C语言 联合体 【C语言】关于数组的一个陷阱! 1、问题 两个数组元素的地址相减得到什么? 先看一段代码: #include <stdio.h> int main(void) { int a[]={0,1,2,3,4,5}; 2019-06-03 C语言 数组 【C语言】#运算符与##运算符 接上篇笔记我们分享的是RTT的PIN设备驱动:【RT-Thread笔记】IO设备模型及PIN设备,其中用到PIN驱动框架中的pin_mode函数来设置引脚的模式: void rt_pin_mode(rt_base_t pin,rt_ba 2019-05-07 C语言 C语言 【C语言】带参宏定义(二) 1、什么是带参宏?带参宏在我们的嵌入式编程中使用得非常多,其定义如下: define 标识符(参数列表) 字符序列 其中参数列表中的参数之间用逗号分隔,字符序列中应包含参数表中的参数。在定义带参数的宏时,宏名标识符与左圆括号之间不允许有空 2019-03-26 C语言 宏定义