1.嵌入式系统中经常要用到无限循环,如何用C编写死循环
答:while(1){} 或者 for(;;)
2.程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里。
答:程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区。
3.关键字const有什么含义?
答:
1)只读。
2)使用关键字const也许能产生更紧凑的代码。
3)使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。
4.请问以下代码有什么问题:
int main(){char a;char *str = &a;strcpy(str,"hello");printf(str);return 0;}
答:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。
5.已知一个数组table,用一个宏定义,求出数据的元素个数
答:#define NTBL (sizeof(table)/sizeof(table[0]))
6.写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
答:#define MIN(A,B) ((A) <= (B) ? (A) : (B))
考点:
1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2) 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优的代码,了解这个用法是很重要的。
3) 懂得在宏中小心地把参数用括号括起来。
7.do……while和while有什么区别?
答:前一个循环一遍再判断,后一个判断以后再循环。
8.什么是预编译,何时需要预编译?
答:
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预

本文涵盖了C语言的基础知识,如无限循环、变量存储、const关键字的用途,以及宏定义的使用。同时讨论了嵌入式系统中的死循环实现。还涉及了程序的内存区域划分,局部和全局变量的区别,以及动态内存分配。文章提到了预编译的作用,并解释了static关键字的多重含义。在进程和线程的对比中,阐述了它们的异同和使用场景。最后,文章讨论了网络通信协议TCP与UDP的区别,强调了各自的优势和适用场景。
最低0.47元/天 解锁文章
5131

被折叠的 条评论
为什么被折叠?



