嵌入式C语言的这10个基本问题,你掌握了吗?

1、 用 预处理指令 #define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题)

#define  SECONDS_PER_YEAR  (60 * 60 * 24 * 365)UL

2、 写一个标准宏 MIN ,这个宏输入两个参数,并返回较小的一个

#define  MIN(A,B) ((A) <= (B) ? (A):(B))

3、 预处理器标识 #error 的目的是什么:

#error : 停止编译 并显示 错误信息

4、 嵌入式系统中经常要用到无限循环,你怎么样用 C 编写死循环

 while(1){...}

do {...} while(1)

for(;;){...}

5、 用 变量 a 给出下面的定义

(1)整形数:int a;

(2)指向整型数的指针:int * a;

(3)指向指针的指针,它指向的指针指向整型数:int * * a;

(4)有10个整型数的数组:int a[10];

(5)有10个指针的数组,它的指针指向整型数:int * a[10];

(6)指向有10个整型数的数组的指针:int ( * a ) [ 10 ];

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

6、static 的作用,请写出两个;

7、关键字const的作用;

另外使用const定义变量:

8、volatile的作用;

定义为volatile的变量可能会被意想不到地改变,优化器在用到这个变量时必须重新读取这个变量的值,而不是保存在寄存器里的备份。

volatile变量的例子:

9、 嵌入式系统总是要用户对变量或寄存器,进行位操作;

#define  BIT3  (0x01 << 3)

static int a;
void set_bit3()
{
 a |= BIT3;    //置 1
}
void clear_bit3()
{
 a &= ~BIT3;   //清 0
}

10、嵌入式系统经常具有要求程序员去访问某特定的内存位置,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66;

int * ptr = NULL;ptr = (int *) 0x67a9;*ptr = 0xaa66;

11、中断的概念 当某个事件发生时,CPU 停止运行正在执行的程序,而转去执行处理该事件的程序,处理该事件后,返回原程序继续执行下去的过程;

ISR:中断服务程序(Interrupt Service Routines)

12、下面代码输出结果?

void foo(void)
{
 unsigned int a = 6;
 int b = -20;
 (a + b > 6) ? puts(' > 6 ') : puts(' <= 6 ');
}

当表达式 中存在 有符号类型 和 无符号类型 时,所有的 操作数 都自动转换为 无符号类型,因此 -20 变成了一个非常大的正整数,该表达式计算出的结果 大于6,答案是输出 > 6。

13、 动态内存分配;

int * p = NULL;p = (int *) malloc(sizeof(int) * 128);  //内存申请free(p);         //内存释放

14、typedef语句用于给基本数据类型和导出数据类型定义一个新的名字

#define  dPS    struct s *
typedef  struct s *   tPS;
dPS p1 , p2;       //错误定义,实际结果是 struct s * p1, p2;
tPS p3 , p4;       //正确定义了两个指针

来源:https://blog.csdn.net/Hongwei_1990/article/details/89409953

(0)

相关推荐

  • 从长整型数据取字节

    从长整型数据取字节

  • 嵌入式C语言开发者必知:“设计模式”

    介绍如何使用设计模式为嵌入式系统创建高效且优化的C语言设计.针对嵌入式系统中从内存访问到事件调度,从状态机设计到安全性.可靠性保证,对系统设计以及性能表现的方方面面进行了详细阐述,也提出了很好的设计规 ...

  • 学习嵌入式C语言的6个层级,你在哪一层?

    C语言可以说是一中经典的编程语言,没有C语言就没有今天的各种操作系统. C语言是基础,你掌握了多少? 嵌入式专栏 1 新手级别 学习目的:过计算机二级,考证,应付期末考试. 需要掌握的程度:掌握C语言 ...

  • 嵌入式C语言自我修养:从芯片、编译器到操作系统(附送书籍)

    最近,阅读了王工(王利涛)赠送的一本由他编著的书籍<嵌入式C语言自我修养>,感觉写的挺不错.今天分享一下这本书籍<嵌入式C语言自我修养>:从芯片.编译器到操作系统. 然后,再送 ...

  • 【语言脑】10.三个妙招解决宝宝说话晚

    首先要了解的是: 宝宝会叫mama不代表懂意思:8个月之后才能真正有意识说话 能理解语言不代表能使用语言:半岁之后的学习和理解能力发展很快,而说话能力慢些,但还是能听懂给他的指令(如告别) 宝宝语不宜 ...

  • 嵌入式C语言中常量的应用实例

    原创嵌入式与汽车电子2021-03-15 15:34:17 常量,我们都知道,就是数值保持不变的量. 在C语言中,常量一旦初始化了,它的值将在整个程序运行周期内,不允许发生任何变化.常量与变量是相对的 ...

  • 分享一篇万字嵌入式C语言知识大汇总

    分享一篇万字嵌入式C语言知识大汇总

  • 长文 | 分享一篇万字嵌入式C语言知识大汇总

    链接:https://blog.csdn.net/zhzht19861011/ 1.简介 市面上介绍C语言以及编程方法的书数目繁多,但对如何编写优质嵌入式C程序却鲜有介绍,特别是对应用于单片机.ARM ...

  • 嵌入式C语言中宏的使用技巧

    在整个嵌入式C语言系列中,我一直都是用嵌入式去限定C语言,而不是针对整个C语言,因为我们这里主要讨论的是嵌入式中的C语言.<C语言程序设计>这门课,大家基本上都在大学课程里学过或者有所了解 ...

  • 嵌入式C语言中字节对齐的问题

    嵌入式C语言中,字节对齐的问题主要出现在结构体中,我们先来看一下结构体的定义. 结构体struct的定义 在C语言中,结构体是一种复合数据类型,其构成元素既可以是基本数据类型(如int.long.fl ...