C语言面试题大汇总
上一篇 / 下一篇 2006-06-19 13:51:28 / 天气: Array / 个人分类:其他
4. static有什么用途?(请至少说明两种)
,g#j5hLL^5qpz T0^01.限制变量的作用域
rii4{+uvq#`02.设置变量的存储域
Re ~$M#A?R M07. 引用与指针有什么区别?木铎校园 BBS 社区G#X!{!KBK
1) 引用必须被初始化,指针不必。木铎校园 BBS 社区zr%^"["g-A8}6~j
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
A}5} w)^02) 不存在指向空值的引用,但是存在指向空值的指针。
@wJS$S0
nU5Bc K08. 描述实时系统的基本特性木铎校园 BBS 社区xL E-Z ri{
在特定时间内完成特定的任务,实时性与可靠性
mn:h1q|;H%p,z3o$wd09. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?木铎校园 BBS 社区{ u!OLvinY P @
全局变量储存在静态数据库,局部变量在堆栈木铎校园 BBS 社区G:jjb)K3]$J
10. 什么是平衡二叉树?
.`8w7o.N^0左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1木铎校园 BBS 社区4Q*gJ[G"U
11. 堆栈溢出一般是由什么原因导致的?
7ar:X%@,H0没有回收垃圾资源
4cX;RY`&D012. 什么函数不能声明为虚函数?
4W{/?)r+A`r0constructor木铎校园 BBS 社区8Gh(N},ZJ[)UwbB$B%~
13. 冒泡排序算法的时间复杂度是什么?木铎校园 BBS 社区7Xx/}\&Z3R:V/?6D TK
O(n^2)木铎校园 BBS 社区rY)H(bq5q
14. 写出float x 与“零值”比较的if语句。
2i:\7K#iCA:o.?2M0if(x>0.000001&&x<-0.000001)
a:V gl2h_016. Internet采用哪种网络协议?该协议的主要层次结构?木铎校园 BBS 社区;WR3T|*o?
tcp/ip 应用层/传输层/网络层/数据链路层/物理层木铎校园 BBS 社区\9k~,Ygj&z
17. Internet物理地址和IP地址转换采用什么协议?
u.Q{:uf^AAn"c0ARP (Address Resolution Protocol)(地址解析協議)
*q W#B-eZ Qo018.IP地址的编码分为哪俩部分?木铎校园 BBS 社区)W_Jwd!h5{ L
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。木铎校园 BBS 社区%ua#?yO'jT{N
木铎校园 BBS 社区0l(u\ aLpw
木铎校园 BBS 社区8?"F0b'[$P#E(B~\
2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
j'q l pHK5l z0循环链表,用取余操作做
]E(P2rHq[ ]s _6K:@03.不能做switch()的参数类型是:
JM1\0a)x2jH~ }0switch的参数不能为实型。木铎校园 BBS 社区a0@7E(y-_D
6rQ8P@s t0華為木铎校园 BBS 社区-n$N#Y `;ue f*y4rX
1、局部变量能否和全局变量重名?
E9D\KK1l8g3j.^K A0答:能,局部会屏蔽全局。要用全局变量,需要使用"::"
:V)d#Vp!y@0局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内
/SR[x3uDZ02、如何引用一个已经定义过的全局变量?木铎校园 BBS 社区 SQ:ya'y {;X%g v
答:extern
],Rp&`XT-i&J0可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错
8iZb&V+G"@ A'@03、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?木铎校园 BBS 社区nJ6s b[#Zq.z
答:可以,在不同的C文件中以static形式来声明同名全局变量。
)T2m+?] `A-[0可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错
LFP/ees}H Ds04、语句for( ;1 ;)有什么问题?它是什么意思?木铎校园 BBS 社区/^wq ]M)xQ E)Oih
答:和while(1)相同。木铎校园 BBS 社区K6r{aV
5、do……while和while……do有什么区别?
+e[G4b*^+Who,f0答:前一个循环一遍再判断,后一个判断以后再循环木铎校园 BBS 社区 Q/T!rHzmg6|
6、请写出下列代码的输出内容
HVG'_R7si0#include木铎校园 BBS 社区6i*L5QW1}|
main()
&{nd%hM2l~0{木铎校园 BBS 社区n0h s/B4Ado
int a,b,c,d;木铎校园 BBS 社区,S5@ S I m\(N&J"L
a=10;木铎校园 BBS 社区-p.pF+Ape`
b=a++;木铎校园 BBS 社区[D9V_ d
c=++a;
~ig]4g8e0d=10*a++;
7SM_IP9q/`-s t y?9L0printf("b,c,d:%d,%d,%d",b,c,d);
r%Q ]n,Cd OIv EyC0return 0;木铎校园 BBS 社区6n)^9y{ \Bt(ax M*o
}
g tE,T7g*pU~x w0答:10,12,120木铎校园 BBS 社区?G/|Q C:q
sBQG!OI1c5q01、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?木铎校园 BBS 社区mshw"h'Ul
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。木铎校园 BBS 社区r+y#p~wAU
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。木铎校园 BBS 社区K]J7WN\@
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件木铎校园 BBS 社区-oe.zG8^7v$Q7U#g
1ceVFY$I\0static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
:|u1{$D0cf0y o Qb0static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
0s m"c|Hr@0static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
,g#j5hLL^5qpz T0^01.限制变量的作用域
rii4{+uvq#`02.设置变量的存储域
Re ~$M#A?R M07. 引用与指针有什么区别?木铎校园 BBS 社区G#X!{!KBK
1) 引用必须被初始化,指针不必。木铎校园 BBS 社区zr%^"["g-A8}6~j
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
A}5} w)^02) 不存在指向空值的引用,但是存在指向空值的指针。
@wJS$S0
nU5Bc K08. 描述实时系统的基本特性木铎校园 BBS 社区xL E-Z ri{
在特定时间内完成特定的任务,实时性与可靠性
mn:h1q|;H%p,z3o$wd09. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?木铎校园 BBS 社区{ u!OLvinY P @
全局变量储存在静态数据库,局部变量在堆栈木铎校园 BBS 社区G:jjb)K3]$J
10. 什么是平衡二叉树?
.`8w7o.N^0左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1木铎校园 BBS 社区4Q*gJ[G"U
11. 堆栈溢出一般是由什么原因导致的?
7ar:X%@,H0没有回收垃圾资源
4cX;RY`&D012. 什么函数不能声明为虚函数?
4W{/?)r+A`r0constructor木铎校园 BBS 社区8Gh(N},ZJ[)UwbB$B%~
13. 冒泡排序算法的时间复杂度是什么?木铎校园 BBS 社区7Xx/}\&Z3R:V/?6D TK
O(n^2)木铎校园 BBS 社区rY)H(bq5q
14. 写出float x 与“零值”比较的if语句。
2i:\7K#iCA:o.?2M0if(x>0.000001&&x<-0.000001)
a:V gl2h_016. Internet采用哪种网络协议?该协议的主要层次结构?木铎校园 BBS 社区;WR3T|*o?
tcp/ip 应用层/传输层/网络层/数据链路层/物理层木铎校园 BBS 社区\9k~,Ygj&z
17. Internet物理地址和IP地址转换采用什么协议?
u.Q{:uf^AAn"c0ARP (Address Resolution Protocol)(地址解析協議)
*q W#B-eZ Qo018.IP地址的编码分为哪俩部分?木铎校园 BBS 社区)W_Jwd!h5{ L
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。木铎校园 BBS 社区%ua#?yO'jT{N
木铎校园 BBS 社区0l(u\ aLpw
木铎校园 BBS 社区8?"F0b'[$P#E(B~\
2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
j'q l pHK5l z0循环链表,用取余操作做
]E(P2rHq[ ]s _6K:@03.不能做switch()的参数类型是:
JM1\0a)x2jH~ }0switch的参数不能为实型。木铎校园 BBS 社区a0@7E(y-_D
6rQ8P@s t0華為木铎校园 BBS 社区-n$N#Y `;ue f*y4rX
1、局部变量能否和全局变量重名?
E9D\KK1l8g3j.^K A0答:能,局部会屏蔽全局。要用全局变量,需要使用"::"
:V)d#Vp!y@0局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内
/SR[x3uDZ02、如何引用一个已经定义过的全局变量?木铎校园 BBS 社区 SQ:ya'y {;X%g v
答:extern
],Rp&`XT-i&J0可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错
8iZb&V+G"@ A'@03、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?木铎校园 BBS 社区nJ6s b[#Zq.z
答:可以,在不同的C文件中以static形式来声明同名全局变量。
)T2m+?] `A-[0可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错
LFP/ees}H Ds04、语句for( ;1 ;)有什么问题?它是什么意思?木铎校园 BBS 社区/^wq ]M)xQ E)Oih
答:和while(1)相同。木铎校园 BBS 社区K6r{aV
5、do……while和while……do有什么区别?
+e[G4b*^+Who,f0答:前一个循环一遍再判断,后一个判断以后再循环木铎校园 BBS 社区 Q/T!rHzmg6|
6、请写出下列代码的输出内容
HVG'_R7si0#include
main()
&{nd%hM2l~0{木铎校园 BBS 社区n0h s/B4Ado
int a,b,c,d;木铎校园 BBS 社区,S5@ S I m\(N&J"L
a=10;木铎校园 BBS 社区-p.pF+Ape`
b=a++;木铎校园 BBS 社区[D9V_ d
c=++a;
~ig]4g8e0d=10*a++;
7SM_IP9q/`-s t y?9L0printf("b,c,d:%d,%d,%d",b,c,d);
r%Q ]n,Cd OIv EyC0return 0;木铎校园 BBS 社区6n)^9y{ \Bt(ax M*o
}
g tE,T7g*pU~x w0答:10,12,120木铎校园 BBS 社区?G/|Q C:q
sBQG!OI1c5q01、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?木铎校园 BBS 社区mshw"h'Ul
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。木铎校园 BBS 社区r+y#p~wAU
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。木铎校园 BBS 社区K]J7WN\@
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件木铎校园 BBS 社区-oe.zG8^7v$Q7U#g
1ceVFY$I\0static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
:|u1{$D0cf0y o Qb0static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
0s m"c|Hr@0static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
