语言基础
ora___
这个作者很懒,什么都没留下…
展开
-
#define #以及#define ##
无论是在面试还是查看源码过程,我们都经常会遇到一些宏的高级操作,使用这些宏操作可以给我们带来非常大的便利,例如#define #以及#define ##,下面通过一段代码分析:#include <stdio.h>//将 a 转化为字符串,属于数据操作#define TOSTR(a) #a//将 a 和 num连接,构成numa代码, 属于代码操作#define...原创 2019-12-15 15:53:07 · 715 阅读 · 0 评论 -
do while(0)在宏定义的妙用
do{ //do something ]while(0);上面是一段使用 do while(0) 的代码,显然如上代码只会执行一次,这样使用显然是毫无意义的的(当然莫种情况下还是有意义的,比如在里面定义局部变量),所以在常规的代码编写中,我们并不会使用 do while(0) 这种结构。但是在Linux内核代码中却大量使用了do while...原创 2019-12-15 14:57:02 · 253 阅读 · 0 评论 -
C语言结构体初始化的四种方法
声明struct InitMember{ int first; double second; char* third; float four;};方法一:定义时赋值struct InitMember test = {-10,3.141590,"method one",0.25};需要注意对应的顺序,不能错位。方法二:定义后逐个赋值s...转载 2019-11-26 15:02:08 · 280 阅读 · 0 评论 -
C语言printf压栈问题
1. 事出有因 今天在刷面试题的时候遇到如下一个面试题:#include <stdio.h>#include <stdlib.h>int main() { int arr[] = { 6, 7, 8, 9, 10 }; int *ptr = arr; *(ptr++) += 123; printf("%d, %d\n", *pt...原创 2019-08-22 21:05:08 · 1023 阅读 · 8 评论