嵌入式C语言常见面试基础知识

关键字:

        数据类型关键字:

        unsigned, singed, char, short, int, long, double, float, enum, union, struct, void

        控制类型关键字:

        swtich, case, default, if, else, goto, for, while, do, break, continue, return

        存储类关键字:

        static, const, extern, register, auto

        其他关键字:

        typedef, voliate, sizeof

数组和指针:

        int a;----------------------一个整型数

        int *a;---------------------一个指向整型数的指针

        int **a;--------------------一个指向指针的指针,它指向的指针指向一个整型数

        int a[10];-----------------一个有10个整型数的数组

        int *a[10];----------------一个有10个指针的数组,该指针指向一个整型数

        int (*a)[10];--------------一个指向有10个整形数数组的指针

        int (*a)(int);-------------一个指向函数的指针,该函数有一个整型参数并返回一个整形数

        int (*a[10])(int);--------一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整形数

关键字static:静态声明

        变量:函数内的变量,在函数被调用过程中值维持不变;模块内的变量,可以在本模块内任意调用,但不可被模块外调用

        函数:模块内有效,不可被模块外调用

关键字const:只读修饰符

        使用const增加代码可读性,紧凑代码

        const int a;-----------一个常整型数a

        int const a;-----------一个常整型数a

        const int *a;----------一个指向常整型数的指针a(指针指向的整型数不可修改,指针可修改)

        int *const a;----------一个指向整型数的常指针a(指针指向的整型数可修改,指针不可修改)

        int const *const a;--一个指向常整型数的常指针a(指针指向的整型数不可修改,指针不可修改)

         *(int * const)(0x67a9) = 0xaa55;-----设置绝对地址为0x67a9的变量的值为0xaa55

const与#define区别

        const定义的变量必须带类型。存放在静态区,编译时确定值,程序运行时只拷贝一次。

        #define定义的变量是没有类型的。在预编译阶段替换,程序运行时每次调用都要拷贝

typedef与#define区别

        typedef struct s * tDps;

        #define dDps struct s *;

        tDps tp1, tp2; =======>tp1, tp2都为结构体指针

        dDps dp3, dp4; =====>dp3为结构体指针,dp4为结构体

voliate:值会不经意间的修改

        ISR服务访问的非自动变量a

        只读寄存器,const voliate regState

        多线程中被共享的变量

inline:

        内联函数,调用频繁,增加效率,牺牲代码空间

宏和函数优缺点:

        函数调用时,先求出参数的值,再代入形参。宏只是简单的替换

        函数调用是在函数运行时,分配临时内存单元。宏是在预编译时替换,调用时只是进行简单的字符替换

        函数的形参和实参都要类型,宏不存在类型问题

        宏只是简单的替换

内存对齐:实质是内存按字节对齐

        #progma pack(N) //告诉编译器按N字节对齐;N值尽可能的为1,2,4,8

        #packed //去掉对齐

        不同平台。多见于不同平台的移植

        性能因素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值