随笔分类 - c
摘要:#include #include int main() { int i_num = 0x12345678; printf("[0]:0x%x\n", *((char *)&i_num + 0)); printf("[1]:0x%x\n", *((char *)&i_num + 1)); printf("[2]:0x%x\n", *(...
阅读全文
摘要:判断一个整数转换成二进制后1的个数,大致有三种方法,分别是左移位、右移位和与运算。 第一种方法:右移位 右移位的基本思路是,先将整数转换成正整数,再将该数与1进行与运算。若不将整数做取绝对值处理,当输入的数是负数时,每向右移动一位,高位会自动补1,就会导致死循环 int ChargeOnesCoun
阅读全文
摘要:提示:用环形链表实现 对于这个题目其实就是用c语言的循环链表实现一个约瑟夫环。我们可以定义一个循环链表,将这n个人加入到链表中,然后定义三个节点指针在链表上循环,移动跨度为3,利用链表的循环功能每次删除第三个节点,这边要注意的一个问题就是你定义的是3个指针,且在循环中他们彼此也都是有 ->next关
阅读全文
摘要:答案:一、 int strcmp(char *source, char *dest) { /* assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息, 然后通过调用 abort 来终止程序运行。 */ assert((source!
阅读全文
摘要:答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效
阅读全文
摘要:已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);,其中strDest是目的字符串,strSrc是源字符串。 (1)Write the function strcpy, don't call C/C++ string libr
阅读全文
摘要:编程实现字符串数转化成整数的办法。[中国某著名IT培训企业公司2005年面试题]解析:字符串转化成整数,可以采用减'0'再乘10累加的办法,字符串减'0'就会隐性转化成int类型的数。答案:程序代码如下:
阅读全文
摘要:怎样将整数转化成字符串数,并且不用函数itoa? 解析:整数转化成字符串,可以采用加'0',再逆序的办法,整数加'0'就会隐性转化成char类型的数。答案:程序代码如下 如果可以使用itoa函数的话,则十分简单,答案如下:
阅读全文
摘要:下面的代码片段的输出是什么?为什么? 解析:这是一道动态内存分配(Dynamic memory allocation)题。 尽管不像非嵌入式计算那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程。面试官期望应试者能解决内存碎片、碎片收集、变量的执行时间等问题。这是一个有趣的问题。故意把0
阅读全文
摘要:在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。 解析:这一问题测试你是否知道为了访问一个绝对地址把一个整型数强制转换(typecast)为一个指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的代码如下:
阅读全文
摘要:这段C程序的结果是多少? 嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Littl
阅读全文
摘要:关键字static的作用是什么? 解析:这个简单的问题很少有人能回答完全。大多数应试者能正确回答第一部分,一部分能正确回答第二部分,但是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。答案:在C语言中,static关键字至少有下列几个作用:●
阅读全文
摘要:关键字const有什么含意?下面的声明都是什么意思? 解析:只要一听到被面试者说“const意味着常数”,面试官就知道自己正在和一个业余者打交道。因为ESP(Embedded Systems Programming,嵌入式系统编程)的每一位求职者都应该非常熟悉const能做什么和不能做什么。正确的说
阅读全文
摘要:我们经常使用“volatile”这个关键字,它是什么意思? 解析:volatile问题。当一个对象的值可能会在编译器的控制或监测之外被改变时,例如一个被系统时钟更新的变量,那么该对象应该声明成volatile。因此编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上。volatil
阅读全文
摘要:请看下面的程序(一个中断服务子程序ISR),请指出这段代码的错误。)[中国台湾某著名CPU生产公司2005年面试题] 答案:(1)ISR不能返回一个值。如果你不懂这个,那么是不会被雇用的。(2)ISR不能传递参数。如果你没有看到这一点,被雇用的机会等同第一项。(3)在许多处理器/编译器中,浮点一般都
阅读全文
摘要:给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a的bit 3。在以上两个操作中,要保持其他位不变。 答案: 阅读以下代码,写出程序运行结果。[中国著名杀毒软件企业J公司2008年4月面试题] 解析:15×4(字节)=60所以要求输出的十六进制结果是3C。这样在大系统里面使用未初
阅读全文
摘要:A.5B.7C.9D.11解析:13如果是一个十进制的话,它可以用13=1*101+3*100来表示。现在我们不知道13是几进制,那我们姑且称其X进制。X进制下的13转化为十进制可以用13=1*X1+3*X0;表示;X进制下的16转化为十进制可以用16=1*X1+6*X0;表示;X进制下的244转化
阅读全文
摘要:以下代码的输出结果是什么?[中国著名金融企业J银行2008年面试题] A.10,0,9,1B.10,10,9,0C.10,1,9,2D.9,10,8,0解析:for循环括号内被两个分号分为3部分:i=0是初始化变量;x>8是循环条件,也就是只要x>8就执行循环;那y=i++是什么?在第一次循环时执行
阅读全文
摘要:(1)一个整型数(An integer)(2)一个指向整型数的指针(A pointer to an integer)(3)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a pointer to aninteger)(4)一个有10个整型数的数组(An array of
阅读全文