1、 en dl; ( str3 = str4 ) ( str5 = str6 ) out ( str7 = str8 ) 结果是:0 0 1 1str1,str2,str3,str4是数组变量,它们有各自的内存空间;而 str5,str6,str7,str8是指针,它们指 向相同的常量区域。4以下代码中的两个 sizeof用法有问题吗?C易void UpperCase( char str ) /将str中的小写字母转换成大写字母 for( size_t i=0; i sizeof(str)/sizeof(str0); +i )if( a=stri & stri =z)stri -= (-A);c
2、har str = aBcDe str 字符长度为: sizeof(str)/sizeof(str0) endl;UpperCase( str ); str (Y)?(Y):(X) /结尾没有 ;C编写死循环?10嵌入式系统中经常要用到无限循环,你怎么用while(1)或者 for(;) 11关键字static的作用是什么?定义静态变量或静态函数12关键字const有什么含意?表示常量不可以修改的变量。13关键字volatile有什么含意?并举出三个不同的例子? 答案:提示编译器对象的值可能在编译器未监测到的情况下改变。(1)并行设备的硬件寄存器(如状态寄存器)(2)中断函数中会访问到的非自动
3、变量(3)多线程应用中被几个任务共享的变量14 int (*s10)(int) 表示的是什么啊?int (*s10)(int) 函数指针数组,每个指针指向一个 int func(int param)的函数。15有以下表达式:int a=248, b=4;int const c=21;const int *d=&int *const e=&b;int const *f const =&请问下列表达式哪些会被编译器禁止?为什么?*c=32; d=& *d=43; e=34; e=& f=0x321f; *c 这是个什么东东,禁止 *d 说了是 con st, 禁止 e = &a 说了是 con s
4、t 禁止 const *f con st =& 禁止16交换两个变量的值,不使用第三个变量。即 a=3,b=5,交换之后a=5,b=3;有两种解法,一种用算术算法,一种用A(异或)。a = a + b; b = a - b; a = a - b; 或者 a = aAb; 只能对 int,char. b = aAb; a = aAb; or a a= b a= a;17 c和c+中的struct有什么不同?c和c+中struct的主要区别是 c中的struct不可以含有成员函数,而 C+中的struct 可以。c+中struct和class的主要区别在于默认的存取权限不同, struct默认为p
5、ublic,而class 默认为 private18.#i nclude stdlib.hvoid getmemory(char *p)p=(char *) malloc(100);strcpy(p,hello worldint main()char *str=NULL; getmemory(str); prin tf(%s/n,str); free(str);程序崩溃,getmemory中的malloc不能返回动态内存, free ()对str操作很危险19char szstr10;strcpy(szstr,0123456789产生什么结果? 长度不一样,会造成非法的 OS20列举几种进程的
6、同步机制,并比较其优缺点 原子操作 信号量机制 自旋锁 管程,会合,分布式系统21.进程之间通信的途径共享存储系统消息传递系统管道:以文件系统为基础22.进程死锁的原因资源竞争及进程推进顺序非法23.死锁的4个必要条件互斥、请求保持、不可剥夺、环路24.死锁的处理鸵鸟策略、预防策略、避免策略、检测与解除死锁25.操作系统中进程调度策略有哪几种?FCFS(先来先服务),优先级,时间片轮转,多级反馈26.类的静态成员和非静态成员有何区别?类的静态成员每个类只有一个,非静态成员每个对象一个27.纯虚函数如何定义?使用时应注意什么?virtual void f()=0;是接口,子类必须要实现28.数组
7、和链表的区别数组:数据顺序存储,固定大小 ;链表:数据可以随机存储,大小可动态改变29.ISO的七层模型是什么?tcp/udp是属于哪一层? tcp/udp有何优缺点?应用层表示层会话层传输层网络层链路层物理层;tcp /udp属于传输层 ;TCP服务提供了数据流传输、 可靠性、有效流控制、全双工操作和多路复用技术等。 与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。由于 UDP比较简单,UDP头包含很少的字节,比 TCP负载消耗少。tcp:提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好 udp:不提供稳定的服务,包头小,开销小30: (void *)pt
8、r和(*(void*)ptr 的结果是否相同?其中 ptr为同一个指针.(void *)ptr 和(*(void*)ptr 值是相同的31:int x=3;%d,x);return 1;问函数既然不会被其它函数调用,为什么要返回 1?mian中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息32要对绝对地址 0x100000赋值,我们可以用 (unsigned int*)0x100000 = 1234; 那么要是想 让程序跳转到绝对地址是 0x100000去执行,应该怎么做?*(void (*)( )0x100000 )();首先要将 0x100000强制转换成函数指针 ,即:
9、(void (*)()0x100000 然后再调用它 :*(void (*)0)0x100000)(); 用 typedef 可以看得更直观些 : typedef void(*)() voidFu ncPtr;*(voidFu ncPtr)0x100000)();33,已知一个数组table,用一个宏定义,求出数据的元素个数#define NTBL(table) (sizeof(table)/sizeof(table0)34。 线程与进程的区别和联系 ?线程是否具有相同的堆栈 ? dll是否有独立的堆栈 ?进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的 时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。 DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1