欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

嵌入式工程师常用知识点总结附答案,呕心沥血篇,绝对实用

程序员文章站 2022-07-14 11:45:39
...

C基础相关的知识点总结

搞嵌入式软件开发,c基础要打捞。基础不牢,搞到最后,地动山摇。---------共勉

FAQ:

  • static全局变量和普通全局变量的区别?static局部变量和普通局部变量的区别?static函数和普通函数的区别?
    answer: 回答这个问题之前,首先要知道局部变量是存在栈中的,全局变量是存在静态区的,动态申请的数据(指针)是存在堆中的。OK,下面从作用域和存储方式这两方面回答这个问题。
    static全局变量只初始化一次,只能被该文件中的函数调用,防止其他文件(稍微复杂点的项目,功能都是模块化,分几个文件)引用,全局变量改变为静态全局变量只是改变了其作用域,存储方式没有发生变化。普通局部变量是存在栈中的,每次调用重新赋值;static局部变量则存储在静态区,只初始化一次,下一次依据上一次的结果值,故static局部变量存储方式发生了变化,同时改变了生命周期。static函数在内存中只有一份,只能在当前定义的源文件中使用;对于可在除当前文件可调用的普通函数,应该在头文件中声明,要是用改函数的其他文件只需要包含其头文件即可,也仅仅是改变了作用域。

  • 高级语言编译的主要步骤
    answer: 编译主要经过4个步骤:预处理->编译->汇编->链接。

    预处理就是将.c文件编程.i文件;编译将.i文件编程.s文件,汇编.s变成.o文件,链接是将.o文件需要的关联到一块

.c变成.i
.i成.s
.s成.o
预处理cpp
编译器ccl
汇编器as
链接器ld
执行文件bin
  • const char * p, char const * p, char * const p 上述三者有什么区别?**
    经验总结:const 在 * 的左侧表示修饰的是常量变量,变量声明时,必须初始化,且变量的值不可修改;const在*的右侧时,表示修饰的是指针常量,指针不能在指向别的变量,但指向变量的值可以改变。
    char name[20] = "asdf";
	char age[20] = "66";
	char *const p = name;//指针常量
	//p = age;//错误,指针常量已经指向name了,不能在修改成指向别的
	p[0] = 's';//正确修改name[0]的值

**赠品:**指针常量和常量指针速记的小诀窍:从左往右念( char *const p
就是指针常量)

  • 写一个标准宏,输入2个参数,并返回较小的那个数。
    #define min(x,y) (x) > (y) ?(y):(x)
    注:要熟练运用三元运算符,代码中老出现if else,真的好low…共勉

若转载,请注明出处,蟹蟹诶