精品文档---下载后可任意编辑(1)什么是预编译,何时需要预编译: 答案: 1、总是使用不常常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有什么区别 答案: char * const p; 7、请问以下代码有什么问题: int main() { char a; char *str=&a; strcpy(str,"hello"); printf(str);return 0; } 答案:没有为 str 分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在精品文档---下载后可任意编辑读写而导致程序崩溃。 8、char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什么错答案:"AAA"是字符串常量。s 是指针,指向这个字符串常量,所以声明 s的时候就有问题。 cosnt char* s="AAA"; 然后又因为是常量,所以对是 s[0]的赋值操作是不合法的。 9、写一个“标准”宏,这个宏输入两个参数并返回较小的一个。答案:.#define Min(X, Y) ((X)>(Y)(Y):(X)) b = a^b; a = a^b; or a ^= b ^= a; 和 c++中的 struct 有什么不同答案:c 和 c++中 struct 的主要区别是 c 中的 struct 不可以含有成员函数,而 c++中的 struct 可以。c++中 struct 和 class 的主要区别在于默认的存取权限不同,struct 默认为 public,而 class 默认为 private 18.#include <> #include <> void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,"hello world"); } int main( ) { char *str=NULL; getmemory(str); printf("%s/n",str); free(str); return 0; } 答案:程序崩溃,getmemory 中的 malloc 不能返回动态内存, free()对精品文档---下载后可任意编辑str 操作很危险 19.char szstr[10]; strcpy(szstr,"09"); 产生什么结果为什么答案: 长度不一样,会造成非法的 OS 20.列举几种进程的同步机制,并比较其优缺点。答案: 原子操作 信号量机制 自旋锁 管程,会合,分布式系统 21.进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础 22.进程死锁的原因答案:资源竞争及进程推动顺序非法 23.死锁的 4 个必要条件答案:互斥、请求保持...