
C
绿野耕夫
一无所有时,还有编程
展开
-
嵌入式经典面试题(转)
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式转载 2010-09-01 09:42:00 · 1034 阅读 · 0 评论 -
C语言常见面试题
1. 请实现一个itoa函数:char* myitoa(int value, char* str, int radix){ const char chvalue[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char tmp; unsigned int uvalue; int index1 = 0, index2 = 0; if (radi原创 2015-01-23 09:25:08 · 882 阅读 · 0 评论 -
C语言之关键字
1. C99标准规定了如下关键字:auto _Bool break case char _Complexconst continue default restrict do doubleelse enum extern原创 2014-08-28 13:55:14 · 702 阅读 · 0 评论 -
求值顺序
复杂表达式的求值顺序是由3个因素决定的:操作符的优先级、操作符的结合性以及操作符是否控制执行的顺序。两个相邻的操作符哪个先执行取决于它们的优先级。如果两者优先级相同,那么它们的执行顺序由它们的结合性决定。简单地说,结合型就是一串操作符从左到右依执行还是从右向左逐个执行。有4个操作符,它们可以对整个表达式的求值顺序施加控制(&& 、||、 ?:、和逗号操作符)。原创 2012-08-21 20:07:21 · 691 阅读 · 0 评论 -
编码规范
1. 文件结构1-1. 版权和版本声明:版权和版本声明位于头文件和定义文件的头,主要内容有:(1)版本信息;(2)文件名称,标识符,摘要;(3)当前版本号,作者/修改者,完成日期;(4)版本历史信息。/******************************************************************************Copy原创 2011-12-08 15:31:07 · 1082 阅读 · 0 评论 -
操作符优先级
操作符优先级操作符描述用法示例结果类型结合性是否控制求值顺序()聚组(表达式)与表达式相同N/A否()函数调用rexp(rexp,…,rexp)rexpL-R否原创 2011-12-07 13:02:23 · 637 阅读 · 0 评论 -
作用域、链接属性和存储类型
作用域:标识符的作用域就是程序中该标识符可以使用的区域。分为4种:文件作用域、函数作用域、代码块作用域和圆形作用域. 文件作用域:任何在所有代码块之外声明的标志符都具有文件作用域,它表示这些标志符从它们的声明处知道它所在的源文件结尾处都是可以访问的。 代码块作用域: 位于一堆花括号之间的所有语句称为一个代码块。任何在代码块的开始位置声明的标志符都具有代码块作用域,表示他们可以被原创 2011-10-28 12:36:33 · 1090 阅读 · 1 评论 -
C细节
<br />今天写一个二进制转10进制的函数,又被C语言的优先级给忽悠了一把,以为移位运算符优先级应该和乘除运算符一样,高于加减运算符,结果悲剧了。恩,估计这个函数以后可能会用到,保存下来:<br />// ===================================================// 8位二进制字符数组转十进制数// 注意:字符数组必须是8位二进制ASCII形式// ==================================================原创 2011-02-11 15:34:00 · 747 阅读 · 0 评论 -
const的用法
const修饰的是紧跟其后的内容,例如:int const *p; const int *p; const修饰的是*p,即p所指向的内容是常量。因此,p指向的地址可以改变,但p指向的地址里的值不能通过指针p改变(但可由其他方式改变);int * const p; const 修饰的是p,即p所指向的地址是常量。因此,p所指向的地址不能改变,但p所指地址里的值可通过指针p改变;int const * const p; 第一个const修饰的是*p,即p所指地址的内容不能通过指针p改变,第2个const修饰的内原创 2010-11-26 12:04:00 · 561 阅读 · 0 评论 -
指令执行时间
高端的处理器里通常都带指令预取和多级流水线结构,昨天突然被问到在这种情况下怎么去计算多条语句的执行时间。想了半天也迷糊,今天一早醒来,突然想起来,其实CPU执行一条指令包含了取指令和执行指令2个步骤,执行指令的时间是固定的,而取指令不同,其实所谓的指令预取和流水线结构,是为了减少取值时间的,尤其在高速的CPU中,CPU读写RAM虽然比读写外部存储器快,但依然赶不上CPU的指令执行速度。因此,在这种带流水线的结构中,执行时间最快应该就是在一条指令执行完后,下一条指令也准备好,CPU不用花时间等待取指原创 2010-11-22 09:12:00 · 4439 阅读 · 0 评论 -
typedef用法小结
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。Q:如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?A: 使用 typedefs 为现有类型创建同义字。 定义易于记忆的类型名 typedef 使用最多的地方是创建易于记忆的类型名转载 2010-11-18 21:00:00 · 667 阅读 · 0 评论 -
指针的地址
指针也可运用取地址运算符&,例如:int i;int *p = &i;在以上声明中,p是指针,指向变量i的地址,*为解引用符,*p即是i的值,&是取地址运算符,&p是存放指针p的地址。看如下2个代码:1.int *Example(int *test){ int i; // 局部变量,在堆栈中分配,函数调用完成后失效 int *p; i = *test; i += test; p = &i; return p; // 此处原创 2010-11-18 21:52:00 · 716 阅读 · 0 评论 -
C指针小结
最近看ucos源代码,有好多和指针有关的地方看得稀里糊涂,重新翻了下C语言以及C++的书,把指针部分的知识梳理了一下: ◆ 计算机存储数据时必须跟踪的三种基本属性: 1. 信息存储在何处 (即地址,起始位置) 2. 存储的值为多少 3. 存储的信息是什么类型 (即占用多大的空间) ◆ 指针是一个变量,其存储的是值的地址,而不是值的本身 ◆ 指针名表示的是地址。*操作符称为间接值或解除引用操作符,将其应用于指针,原创 2010-10-23 21:57:00 · 828 阅读 · 1 评论 -
基础笔记
<br />1. 浮点数都是有符号型<br />2. 函数如果不显式地声明返回值的类型,它默认返回整型<br />3. 在函数中声明为const的形参在函数被调用时会得到实参的值<br />4. switch()的表达式必须是整型值<br />5. 每个case表达式的标签都必须是惟一的<br />6. default可出现在任何case可以出现的位置,每个switch只能有一个default<br />7. 标准说明,无符号数执行的所有移位操作都是逻辑移位;但对于有符号值,到底采用逻辑移位还原创 2010-12-08 15:36:00 · 535 阅读 · 0 评论 -
C语言声明优先级规则
A 声明从它的名字开始读取,然后按照优先级顺序依次读取。B 优先级从高到低依次是: B.1 声明中被括号括起来的部分; B.2 后缀操作符:括号()表示这是一个函数,而方括号[]表示这是一个数组; B.3 前缀操作符:*号表示“指向...的指针”C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int,long等),那它作用于类型说明符。在其他情况下,const和(volatile)关键 字作用于左边紧邻的指针星号.原创 2010-11-26 11:51:00 · 1333 阅读 · 0 评论 -
volatile的使用
这几天老是纠结于这个关键字,啃了些资料,稍微有点体会,就先写下来吧,要深入理解估计需要更深的汇编知识和编译原理方面的知识。 1. 以下三个是常用到volatile的地方: 1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3) 多线程应用中被几个任务共享的变量 2. volatile的精确定义及解释: volatile意为易变的,一个申明为volatile的变量即时告诉编译器这个变原创 2010-09-16 13:43:00 · 711 阅读 · 0 评论 -
二叉树的创建及其遍历
https://www.github.com/wangzhijun_0224/AlgorithmStudy.git.h文件:#ifndef _DS_CHARPTER05_H_#define _DS_CHARPTER05_H_/********************************************************************************原创 2015-03-16 15:23:12 · 872 阅读 · 0 评论