嵌入式C题

1.const的作用是什么?
第一,限定一个只读变量(不是常量)。如const double PI = 3.14第二,限定函数参数,如,void function(const char *p) //函数只能读取不能改变p的值
2.关键字volatile有什么含意?
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错
3.嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
1、把a的bit3赋值为1 a |= (0x01<< 3);//a或等于1左移3位,这样保证其他的位不变,bit3被赋值为1 2、把a的bit3清除 a &=  ~(0x01<< 3);//a与等于(1左移3位之后取反),这样保证其他的位不变,bit3被清除
4.用typedef自定义的数据类型?
1,用来定义一种类型的别名,这样,可以用它来连续定义变量,而不是简单的宏替换,比如:typedef char* PCHAR;PCHAR pa, pb;  2,在C时代,定义了一个结构体之后,再使用的时候还要加上struct关键字才能用来定义变量,这样会比较麻烦,而使用typedef来定义之后,就可以不用写struct关键字了,比如:typedef struct tagPOINT  {      int x;      int y;  }POINT;  POINT p1;当然,,C++里可以不用这样,因为C++使用结构体的时候不需要加struct关键字3,用typedef来定义与平台无关的类型。比如你有一个跨平台的项目,需要统一使用一种双精度浮点型的类型,而在一些平台上可能没有这种实现,或者实现不同,这时候你就可以根据不同的平台来定义你自己的类型4,用来使复杂的定义简单化,最常用的就是给函数指针定义一个别名所以,总的来说,typedef并不是“发明”了另外一种新类型,而相当于是一种类型的别名,为了方便使用。
5.sizeof是一个运算符,运算结果是类型的大小(内存字节数);

strlen()是一个函数,返回值为一个字符串的长度.
6.写出short ,char ,unsigned char的表示范围?
1字节=8个位
在32位系统中一个char类型一般为8个bit,所以能存储的数据范围为-128~127,而unsigned char则是0~255,字符型所存储的数据是用来表示字符的,例如ASCⅡ或Unicode。signed char的范围是-127到127.short -32767 ~ + 32768 (2 Bytes)
7.编写一个strcpy()函数?10分
void strcpy( char *strDest, char *strSrc )  
{
 
 while( (*strDest++ = * strSrc++) != "\0"); 
 } (4分)
另一种:
//为了实现链式操作,将目的地址返回,加3分! 
 char * strcpy( char *strDest, const char *strSrc ) 
 {
 
 assert( (strDest != NULL) &&(strSrc != NULL) ); 
  char *address = strDest;
 
while( (*strDest++ = * strSrc++) != ?\0? ); 
 return address; 
 }
8.内存的分配方式有几种,他们的区别,各举例。
1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。 3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。
9.const的用法,以及声明const变量与宏的区别。
const的用法有四种:参数、返回值、函数,用const修饰变量将限定变量为只读,该变量值不允许被改变。使用const还可以节省内存空间。
define:定义预编译时处理的宏; 只进行简单的字符替换,无类型检测 const:定义程序中的常量,编译时处理; 常量修饰符,把变量定义为常量。
10.static有什么用途?(至少说明两种)
1) 限制变量的作用域  2) 设置变量的存储域
11.队列和栈有什么区别?
栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。但它们是完全不同的数据类型。除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定"。栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。和线性表相比,它们的插入和删除操作受更多的约束和限定,故又称为限定性的线性表结构。
12.写出冒泡排序代码:

13.c指令及用途:

14.sizeof及strlen区别:

sizeof定义:sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数

sizeof是一个运算符,运算结果是类型的大小(内存字节数);

strlen()是一个函数,返回值为一个字符串的长度

Strlen:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置开始扫描,直到碰到第一个字符串结束符‘\0‘为止,然后返回计数器值。

15.写出short ,char,unsigned char的表示范围?

16.(单片机)STM32的IO八种配置模式:

17.C指针的应用:

1.一些高级声明:

1) int *f( void);

f是一个函数,返回值类型是一个指向整型的指针。

2) int (*f) (void );

f是一个函数指针,它所指向的函数返回值类型是一个整型值。

3) int *(*f) (void );

f是一个函数指针,它所指向的函数返回值是一个整型指针,只有对其进行间接访问,才能得到一个整型值。

4) int *f[ ];

f是一个数组,它的元素类型是指向整型的指针(指针数组)。

5) int (*f[ ]) (void );

f是一个数组,数组元素的类型是函数指针,它所指向的函数返回值是整型值。

6)int *(*f[ ]) (void );

f是一个数组,数组元素的类型是函数指针,它所指向的函数返回值是指向整型的指针。

2. 函数名被使用时总是由编译器把它转换成函数指针。

18.(硬件)选择电阻时要考虑什么?
选择电阻是需要考虑电阻的功率 阻值 允许加载在其两端的最大电压 允许通过的最大电流 等等.

19.(单片机)单片机上电后没有运转,首先要检查什么?
1)电源,查看单片机各引脚电压值是否正确
2)查看晶振是否正常工作,可以用示波器查看
3)查看最小系统有无接错,断路等毛病,用万用表。

20.(linux)简述嵌入式Linux系统的初始化过程。

嵌入式Linux系统开机首先运行BootLoader,然后由BootLoader引导启动内核,由内核检查和初始化硬件设备,载入设备的驱动程序模块,安装root文件系统,然后内核将启动一个名为init的进程(2分)。在init运行完成并启动其它必要的后续进程后,系统开始运行,引导过程结束。init进程启动时需要读取inittab配置文件,该文件确定init在系统启动和关机时的工作特性。

时间: 2024-10-07 19:22:30

嵌入式C题的相关文章

嵌入式考试Shell编程题

单片机与嵌入式系统考试Shell编程题库,简单地做了下. 9. 与题7类似,多了个乘法运算. #!/bin/bash # test1.sh # 2016.1.2 echo "Please input N student grade:" read -a grade for ((i=0;i<${#grade[@]};i++)) do if [[ ${grade[i]} -ge 90 ]] then grade[i]=5 elif [[ ${grade[i]} -ge 80 ]] th

跟涛哥一起学嵌入式 第05集:一道程序改错题,测出你的嵌入式功底

大家好,欢迎阅读<跟涛哥一起学嵌入式>第05集,我们今天讨论一下中断的基本概念. 中断,是嵌入式开发中经常使用的一个功能,也是嵌入式工程师必须要掌握的一个概念:CPU和外设通信时,一般都采用中断的形式异步通信,可以大大提高CPU资源的利用率.而你对中断的理解,到底有多少呢?不要急,一道程序改错题,就可以测出你的嵌入式系统功底. 比如,我们在嵌入式ARM裸机平台上,要实现一个MP3播放器,要求实现如下功能:当按键按下时,可以播放.暂停.播放下一首.上一首.为此,我们设计一个按键中断服务程序,当有

嵌入式题库最全的,去公司面试都会出现

现在嵌入式发展这么快,很多人开始踏上嵌入式学习之路,据市场统计,一般毕业或者找工作的一些人,在面试公司的时候,都会在这个地方卡壳,那就是面试题,很多人都是面试的很好,但是在做面试题的时候,手下的功夫不够深,最后被面试题而刷了下来,使得找工作变成了难题,空有一身的才华了,而且这也是对一些嵌入式面试的一些空难户而总结,可以学学哦,去公司面试一般都是会有的.请点击更多华清远见嵌入式题库分享大全(1)char constp char const p const char *p 上述三个有什么区别? 答案

嵌入式编程 中断 一题

Interrupts are an important part of embedded systems. Consequently, many compiler vendors offer an extension to standard C to support interrupts. Typically, the keyword is _interrupt. The following routine(ISR), point out the errors in the code. _int

1、基础题

基础题: 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. 2.session与cookie的区别? 答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的. 两者都可通过时间来设置时间长短 3.数据

嵌入式开发技术三级

1.酒店客房的门锁系统是由总台服务器和若干客房指纹锁组成,其基本功能具体描述如下: a.客房的指纹锁与总台服务器之间通过通信网络连接. b.旅客在总台登记住宿时,录入其指纹信息,并提取其特征值存储在总台服务器中.同时录入一个密码(若干位数字组成),以备指纹无法开锁时,用密码开锁. c.旅客在开客房指纹锁时,把相应手指放在门锁的指纹采集部件上,采集相应的指纹图像信息,并传输给总台服务器. d.总台服务器接收到某个客房指纹锁传输来的指纹图像信息后,进行特征值求取并进行匹配,若匹配正确,则回送开锁指令

云技术,智能家居与嵌入式——前景好的产业

第一章 云计算技术及在日常生活中的应用 1.1  三大应用 1.1.1 云物联 物联网 顾名思义,"物联网就是物物相连的互联网".这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络:第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信. 物联网的两种业务模式: (1)MAI(M2M Application Integration), 内部MaaS: (2)MaaS(M2M As A Service), MMO, Multi-Tenant

全面解析《嵌入式程序员应该知道的16个问题》

文章为转载文章,写的很好,和大家分享下,原文连接如下: ----Sailor_forever分析整理,[email protected] http://blog.csdn.net/sailor_8318/archive/2008/03/25/2215041.aspx 1.预处理器(Preprocessor) 2.如何定义宏 3.预处理器标识#error的目的是什么? 4.死循环(Infinite loops) 5.数据声明(Data declarations) 6.关键字static的作用是什么

【转】嵌入式程序员应该知道的16个问题

全面解析<嵌入式程序员应该知道的16个问题> ----Sailor_forever分析整理,[email protected] http://blog.csdn.net/sailor_8318/archive/2008/03/25/2215041.aspx 1.预处理器(Preprocessor) 2.如何定义宏 3.预处理器标识#error的目的是什么? 4.死循环(Infinite loops) 5.数据声明(Data declarations) 6.关键字static的作用是什么? 7.