很酷的C语言技巧】的更多相关文章

C语言常常让人觉得它所能表达的东西非常有限.它不具有类似第一级函数和模式匹配这样的高级功能.但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了. 指定的初始化 很多人都知道像这样来静态地初始化数组: , , , , }; C99标准实际上支持一种更为直观简单的方式来初始化各种不同的集合类数据(如:结构体,联合体和数组). 数组 我们可以指定数组的元素来进行初始化.这非常有用,特别是当我们需要根据一组#define来保持某种映射关系的同步更新时.来看看一组错误码的定义,…
C语言常常让人觉得它所能表达的东西非常有限.它不具有类似第一级函数和模式匹配这样的高级功能.但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了. ☆ 指定的初始化 很多人都知道像这样来静态地初始化数组: int fibs[] = {1,1,2,3,5}; C99标准实际上支持一种更为直观简单的方式来初始化各种不同的集合类数据(如:结构体,联合体和数组). ☆ 数组 我们可以指定数组的元素来进行初始化.这非常有用,特别是当我们需要根据一组#define来保持某种映射关系…
Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光能指向变量.字符串.数组,还能够指向函数.在C语言中允许将函数的入口地址赋值给指针.这样就可以通过指针来访问函数.还可以把函数指针当成参数来传递.函数指针可以简化代码,减少修改代码时的工作量.通过接下来的讲解大家会体会到这一点的. /*函数指针简单讲解 *通过指向函数的指 *针调用比较两个数 *大小…
一 在写之前 最好指定python的路径: #!/usr/bin/python python 在linux中需要添加编码方式:以免出现中文乱码 # -*- coding: UTF-8 –*-   二 在各类语言中,python应该是最会利用识缩进的语言 ,他的for语句即使有多行也不需要想java,C++.c一样使用{} ,可以像js.swift一样同换行符代表一句话,而不是使用: 号.有学过语言背景的同学请注意: 在python看来:         如果改变了缩进的方式,例如在第二个for上…
1.   #define LOWER(c)            (unsigned char)(c | 0x20) 换成小写 2.   gcc -Wall -Werror //告警当成 错误来处理 3.  gcc -Ox  //优化等级,一般debug搞成0, release搞成3 4. 一种处理错误码的方法 不说什么,贴代码 #include <stdio.h> #define HTC_ERROR_MAP(xx) \ xx(OK, "SUCCESS")\ xx(INVA…
今天在进行STM32内部falsh存储的时候,发现固件库历程的函数原型是这样的: 第一个是地址,在我的STM32中是2K一页的,第二个是要写入的数据. 问题就来了,存储一个小数该怎么办呢?固件库给的是整形数据啊! 三种解决办法: 第一:最具大众性的 把小数乘以系数放大,当做整数存储,然后再除以放大系数得到小数本身.例如 float  a=1.23; int b=a*100;把b存进去,取出来的时候再除以100,就可以得到小数a了.这是最简单可能也是最好想到的了,但同时,这也是最麻烦的了.稍有C语…
1.#define中使用do{statement}while(0)保证statement无论在何处都能正确执行一次2.将链表操作抽象出来,与宿主结果相互独立.所有的链表操作都作用与list_head,然后通过宏#define list_entry(ptr, type, member) container_of(ptr, type, member)获取宿主结构的地址. container_of定义: #define container_of(ptr, type, member) ({ \const…
http://sahandsaba.com/thirty-python-language-features-and-tricks-you-may-not-know.html  感谢原作者 30 Python Language Features and Tricks You May Not Know About Posted on Mar 05, 2014 , last modified on Mar 16, 2014 By Sahand Saba   1.1   Unpacking >>>…
1.table函数返回众数,再转为dataframe as.data.frame(table(x)) 2.使用which 返回数组下标 which(rs.list=="rs1008507") 3.循环数值存储 (1) M<-matrix(NA,6,6)for(i in 0:6){ if(i<=2) {for(j in (2-i):(6-i)) M[i,j]<-{( i*0.5+(j+3)+(i+j-2)*0.5+(4-(i+j-2))+3)}} else {for(j…
位运算 & 位逻辑与 | 位逻辑或 ^ 位逻辑异或 - 位逻辑反 >> 右移 << 左移 通过对数据本身的01编码进行处理,速度稍微快于普通运算符 如,10 / 2 ==> 10 >> 2 函数清零 memset(s, 0, sizeof(s)) s 为要处理的内容, 然后 0是处于的状态,就是全部字节设为0,然后最后是设的长度…