面试题收录——每日一题
a1314521531
这个作者很懒,什么都没留下…
展开
-
每日一题(53)—— 评价代码片段
评价下面代码片段:unsigned int zero = 0; unsigned int compzero = 0xFFFF; /*1's complement of zero */ 对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: unsigned int compzero= ~0; 这一问题原创 2017-08-23 13:53:30 · 1618 阅读 · 0 评论 -
每日一题(30)—— 局部变量能否和全局变量重名?
局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。原创 2017-08-15 08:35:17 · 837 阅读 · 0 评论 -
每日一题(29)—— 如何引用一个已经定义过的全局变量
如何引用一个已经定义过的全局变量?extern关键字可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。原创 2017-08-14 08:27:52 · 2843 阅读 · 0 评论 -
每日一题(28)—— 引用与指针的区别
引用与指针有什么区别?(1)引用必须被初始化,指针不必;(2)引用初始化以后不能被改变,指针可以;(3)不存在指向空值的引用,但是存在指向空值的指针。NULL。原创 2017-08-14 08:27:05 · 533 阅读 · 0 评论 -
每日一题(41)—— 数组和链表的区别
数组和链表的区别:数组:数据顺序存储,固定大小连表:数据可以随机存储,大小可动态改变原创 2017-08-21 09:06:44 · 449 阅读 · 0 评论 -
每日一题(40)—— 字符串常量
下列代码有什么问题?char* s="AAA";printf("%s",s);s[0]='B';printf("%s",s);"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。cosntchar* s="AAA";然后又因为是常量,所以对是s[0]的赋值操作是不合法的。原创 2017-08-21 09:06:27 · 670 阅读 · 0 评论 -
每日一练(8)—— 野指针
int *p;int a = 20;*p = a;printf("%d",*p);运行结果是什么?A.10B.a 的 地址值C.编译错误D.运行异常分析:一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。原创 2017-08-06 13:18:12 · 672 阅读 · 1 评论 -
每日一题(7) —— 求余运算符
设有以下语句:int x=10;x+=3+x%(-3),则x的值是:A.11B.12C.14D.15分析:求余运算,除数和被除数都可以是负的,求余后的值 与 被除数 的符号相同,比如 -10 % -3 = -1, 10 % -3 = 1。原创 2017-08-06 11:12:36 · 998 阅读 · 2 评论 -
每日一题(39)—— sizeof
以下代码中的两个sizeof用法有问题吗?void UpperCase(char str[]){ for(size_t i = 0; i < sizeof(str); ++i) { str[i] -= ('a' - 'A'); }}char str[] = "aBcDe";cout << "str字符长度为: " << sizeof(str原创 2017-08-20 16:39:11 · 636 阅读 · 0 评论 -
每日一题(38)—— 一个32位的机器,该机器的指针是多少位?
一个32位的机器,该机器的指针是多少位?指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。原创 2017-08-20 16:38:48 · 3143 阅读 · 0 评论 -
每日一题(31)—— 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。原创 2017-08-15 08:35:55 · 2142 阅读 · 1 评论 -
每日一题(42)—— 已知一个数组table,用一个宏定义,求出数据的元素个数
已知一个数组table,用一个宏定义,求出数据的元素个数。// 总大小除以第一个元素的大小#define NTBL (sizeof(table)/sizeof(table[0]))原创 2017-08-22 08:28:08 · 8064 阅读 · 1 评论 -
每日一题(43)—— 数组越界
下面这个程序执行后会有什么错误或者效果:#define MAX 255int main(){ unsigned char A[MAX],i; for (i=0;i<=MAX;i++) { A[i]=i; }}解答:死循环加数组越界访问(C/C++不进行数组越界检查)MAX=2原创 2017-08-22 08:28:26 · 593 阅读 · 0 评论 -
每日一题(52)—— 进程
列举几种进程的同步机制:1)原子操作2)信号量机制3)自旋锁 4)管程,会合,分布式系统网络编程中设计并发服务器,使用多进程与 多线程 ,请问有什么区别?1) 进程:子进程是父进程的复制,它获得父进程数据空间,堆栈的复制品。2) 线程:相对于进程而言,线程更接近于一个执行体的概念,它可以与同进程的其他线程同享进程资源,但同时拥有自己的栈空间,寄存器,原创 2017-08-23 13:53:11 · 769 阅读 · 0 评论 -
每日一题(51)—— 大小端判断
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1。int checkCPU(){ { union w { int a; char b; } c; c.a = 1; return (c.b == 1); }}分析:嵌入式系统开发者应该对Little原创 2017-08-23 13:52:53 · 870 阅读 · 0 评论 -
每日一题(50)—— 各类型与零值的比较
分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)解答: BOOL型变量:if(!var) int型变量: if(var==0) float型变量: const float EPSINON =0.00001; if ((x >= -原创 2017-08-23 13:52:33 · 682 阅读 · 0 评论 -
每日一题(49)—— 有符号数与无符号数
void foo(void){ unsigned int a = 6; int b = -20; (a + b> 6)?(">6"):("<6");}上面代码输出是什么,为什么?答案是“>6”原因是当操作数中有符号类型和无符号类型进行运算时所有的操作数都自动转换成无符号数。原创 2017-08-23 13:52:01 · 834 阅读 · 0 评论 -
每日一题(48)—— 中断
中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。__interrupt double compute_area(double radius){ double area = pi*radi原创 2017-08-23 13:51:39 · 1035 阅读 · 0 评论 -
每日一题(47)—— 置1与清0
嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。置1用|,清0用&#define BIT3 (0x01<<3)static int a;void set_bit3(void){ a|=BIT3;}void clear_bit3(原创 2017-08-23 13:51:19 · 1558 阅读 · 0 评论 -
每日一题(46)—— volatile
1.一个变量可以既是const 还是volatile吗?解释为什么?可以,例如状态寄存器。它首先应该是volatile 因为它可以出乎意料的修改,而且应该是const,这个寄存器程序不应该去修改。2.一个指针可以说volatile的吗?可以,例如中断服务子程序中修改一个指向buffer的指针。3.下列代码有错误吗?Int square(volatile int *ptr){原创 2017-08-23 13:50:42 · 740 阅读 · 0 评论 -
每日一题(33)——用两个栈实现一个队列的功能?要求给出算法和思路
用两个栈实现一个队列的功能?要求给出算法和思路。设2个栈为A,B, 一开始均为空.入队:将新元素push入栈A;出队:(1)判断栈B是否为空;(2)如果不为空,则将栈B中最顶元素pop出;如果为空,则将A中所有元素POP出并PUSH到B中,这后POP出最顶元素,A则下移一单位。原创 2017-08-16 08:33:51 · 3430 阅读 · 0 评论 -
每日一题(32)—— 联合体大小
设有以下说明和定义:typedef union{ long i; int k[5]; char c;} DATE;struct data{ int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",sizeof(structdate)+sizeof(max));的执行结果是:原创 2017-08-16 08:33:02 · 668 阅读 · 1 评论 -
每日一题(45)—— 字符数组找错
void test2(){ char str1[10], str2[10]; int i; for(i=0; i<10; i++) str1[i] = 'a'; strcpy( str2, str1 );}这段代码有什么问题?解答:如果面试者指出字符数组str1不能在数组内结束可以给3分;如果原创 2017-08-23 08:22:40 · 839 阅读 · 0 评论 -
每日一题(44)—— 请列举一个软件中时间换空间或者空间换时间的例子
请列举一个软件中时间换空间或者空间换时间的例子:--->时优void swap(int a,int b){ int c; c=a; a=b; b=c;}--->空优void swap(int a,int b){ a=a+b; b=a-b; a=a-b;}原创 2017-08-23 08:22:02 · 2938 阅读 · 1 评论 -
每日一题(6)—— sizeof用法
已知int a,一下那种写法是错误的?A. sizeof(int);B. sizeof(a);C. sizeof int;D. sizeof a;以下答案是来自《C语言深度剖析》:原创 2017-08-05 22:12:20 · 675 阅读 · 0 评论 -
每日一题(27)—— define定义一个宏表明1年中有多少秒
用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)分析:1、#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2、懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3、意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整原创 2017-08-13 11:16:12 · 3412 阅读 · 0 评论 -
每日一题(26)—— 无限循环的几种形式
嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?1、while(1) { } —— 个人推荐使用 2、for(;;) { } —— 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。3、goto Loop: ... goto Loop; —— 应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是原创 2017-08-13 11:15:06 · 1234 阅读 · 0 评论 -
每日一题(17)—— 关键字volatile的作用和三个不同的应用场合
关键字volatile的作用和三个不同的应用场合作用:防止编译器优化;(1)并行设备的硬件寄存器(如状态寄存器);// #define S5PV210_GPIO_DATA (*(volatile unsigned char *)0x40000000)(2)中断服务子程序中会访问到的非自动变量;(3)多线程应用中被几个任务共享的变量等等。原创 2017-08-10 08:37:28 · 960 阅读 · 0 评论 -
每日一题(16)—— 声明和定义的区别
简述变量/函数声明和定义的区别:原创 2017-08-10 08:36:34 · 647 阅读 · 0 评论 -
每日一题(35)—— heap与stack的差别
heap与stack的差别:Heap是堆,stack是栈。Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。Stack空间有限,Heap是很大的自由存储区C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在原创 2017-08-17 08:28:15 · 701 阅读 · 0 评论 -
每日一题(34)—— 线程
1.线程的概念:2 与进程的区别:3 线程与进程的区别和联系? 线程是否具有相同的堆栈?1、线程是指进程内的一个执行单元,也是进程内的可调度实体.2、与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进原创 2017-08-17 08:27:52 · 595 阅读 · 0 评论 -
每日一题(1) —— 数组计算
#include int main(void){ int array[10] = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 0[array] = 1; printf("%d\n", (-1)[array + 5]); return 0;}原创 2017-08-02 18:06:50 · 1241 阅读 · 4 评论 -
每日一题(11)—— 结构体大小
分析下面的代码,求运行结果。#include struct{ int id; unsigned char arg; char *p; void (*func)(void);} test;int main(void){ printf("sizeof(test.id):%d\n", sizeof(test.id)); print原创 2017-08-08 08:34:04 · 608 阅读 · 1 评论 -
每日一题(10)—— 数组与指针
分析下面的代码,求输出结果。 int a[5] = {1,2,3,4,5}; int *p = (int *)(&a + 1); printf("%d %d",*(a + 1),*(ptr - 1)); 分析:&a —— 数组原创 2017-08-07 13:24:50 · 664 阅读 · 0 评论 -
每日一题(9)—— 写一个标准宏MIN,这个宏输入两个参数并返回较小的一个
写一个标准宏MIN,这个宏输入两个参数并返回较小的一个。分析:宏定义的注意两点:1、数据类型是否有溢出的风险(如一年有多少个秒的宏);2、带参宏的每个参数都要用括号括起来。#define MIN(x,y) ((x) 如果x,y不加原创 2017-08-07 09:28:18 · 12497 阅读 · 8 评论 -
每日一题(15)—— static有什么用途
static的用法:(简要回答就好)1、修饰全局变量:只在本文件有效,存储在全局区;2、修饰局部变量:只在本函数有效,存储在全局区;3、修饰函数:只在本文件有效。原创 2017-08-09 13:01:32 · 619 阅读 · 0 评论 -
每日一题(14)—— 交换a,b的值(不使用中间变量)
如何将a,b的值进行交换,并且不使用任何中间变量?推荐答案:a = a ^ b;b = a ^ b;a = a ^ b;分析:下面的答案不好,可能会导致越界的问题a = a + b; // 可能越界b = a - b;a = a - b;原创 2017-08-09 09:14:28 · 791 阅读 · 0 评论 -
每日一题(13)—— #include<file.h> 与 #include “file”的区别
#include 与 #include “file”的区别?原创 2017-08-08 21:52:16 · 1898 阅读 · 0 评论 -
每日一题(2)—— -2与2的比较
分析下面的代码,求运行结果。#include int main(void){ if(-2 > 2) { printf("11111\r\n"); } else { printf("22222\r\n"); } return 0;}分析:-2和2都没有声明存储类型,编译器默认按int存原创 2017-08-03 08:50:51 · 707 阅读 · 2 评论 -
每日一题(3)—— -2与2的比较(二)
分析下面的代码,求运行结果。#include int main(void){ if(-2L > 2UL) { printf("11111\r\n"); } else { printf("22222\r\n"); } return 0;}分析:常量后面接L表示long型存储,原创 2017-08-03 08:51:23 · 796 阅读 · 0 评论