Intel笔试题目
A.c 和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?这两个static变量会保存到哪里(栈还是堆或者其他的)?
问题点数:20、回复次数:14Top
1 楼xiaonian_3654(你猜猜(我要打光棍,小乔嫁不了))回复于 2005-08-03 18:46:32 得分 0
不会,
不是栈也不是堆Top
2 楼ailab()回复于 2005-08-03 18:51:00 得分 0
继续期待达人Top
3 楼kxj()回复于 2005-08-03 18:56:54 得分 0
static变量是存放在静态存储区的。Top
4 楼kxj()回复于 2005-08-03 19:05:06 得分 0
两个相同名字的static变量不会引起冲突。
static也是一个局部变量。只在定义的地方可见。其他地方访问不到。Top
5 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 19:14:24 得分 0
static变量是存放在静态存储区
对于一个 static变量
根据作用规则
这个变量是不会作用到其他文件的
只会在本文件中存在!
所以 应该是相互没有影响才是Top
6 楼prgmBaggio(only C)回复于 2005-08-03 19:17:04 得分 0
既然问这样的问题,肯定会有冲突,就是不知道哪里有冲突Top
7 楼newbiestar()回复于 2005-08-03 20:14:10 得分 0
Intel出这种没水准的题目?流汗不止……Top
8 楼kiluyar(猪猪)回复于 2005-08-03 20:17:04 得分 0
当然没有冲突了,除非Intel的编译器实现会报告冲突,哈哈!Top
9 楼AntonlioX(做人要厚道)回复于 2005-08-03 20:38:45 得分 0
在《C/C++深层探索〉中的第54页 说明了这个情况
这样是会造成名字的冲突。Top
10 楼AntonlioX(做人要厚道)回复于 2005-08-03 20:39:26 得分 0
static变量保存在数据段中 但是它又具有局部的性质,不是全局可见。Top
11 楼conglingkaishi(请不要给我分)回复于 2005-08-03 20:40:48 得分 0
这个真的是IN的面试题??Top
12 楼yanddan(索尔)回复于 2005-08-03 20:46:09 得分 0
刚才试了一下,static和const都没报错Top
13 楼jiajun2001(Jagen(嘉俊))回复于 2005-08-03 21:01:31 得分 20
static的全局变量,表明这个变量仅在本模块中有意义,不会影响其他模块。
他们都放在数据区,但是编译器对他们的命名是不同的。
如果要使变量在其他模块也有意义的话,需要使用extern关键字。Top
14 楼dog0883(笨狗一条)回复于 2005-08-04 22:02:45 得分 0
编译是没有问题的。msdn上的解释:
When modifying a variable, the static keyword specifies that the variable has static duration (it is allocated when the program begins and deallocated when the program ends) and initializes it to 0 unless another value is specified. When modifying a variable or function at file scope, the static keyword specifies that the variable or function has internal linkage (its name is not visible from outside the file in which it is declared).Top




