C语言概念性问题,拜托大家给我讲讲

48.C语言中,形参缺省的存储类说明是
A auto() B static C register D extern
我觉得形参在声明的时候是extern 而在定义的时候却又是auto()
所以AD 不确定 麻烦高人能给个说法 谢谢

49.以下叙述中不正确的是
A 一个变量的作用域完全取决于变量定义语句的位置
B 全局变量可以在函数以外的任何部位进行定义
C 局部变量的“生存期”只限与本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用
D一个变量说明为static存储类是为了限制其他编译单位的引用
答案是B
麻烦请说说B 错在哪里谢谢拉
还有就是 C 我觉得如果定义一个static 的话 那在下一次调用时 不就可以将上次调用后局部变量的运算结果保存了么? 那C 不是错了么?

48.C语言中,形参缺省的存储类说明是
A auto() B static C register D extern
选择A

A auto是自动的,意思是数据使用后内存自动释放,不特别说明的都是这种数据类型,auto可以省略。
B static是静态的,意思是数据使用后内存不释放,直到函数结束,用时必须加
static说明。
C register是寄存的,在编程中很少提及
D extern 只在扩展或缩小数据作用域时使用。

49题。
B 全局变量可以在函数以外的任何部位进行定义
C语言里全局变量在文件的开头定义。如:

int a=10;//文件开头定义
main()
{
a=a+10;
......
}

函数以外的任何位置定义肯定不对,如:
main()
{
a=a+10;
......
}
int a=10;//函数后面定义肯定不行啦,编译器都通不过

C中,在局部变量前加一个static 的话就成了静态局部变量。它的特点:同一次函数调用内它的值可以被保存到下一次执行该函数内使用到该变量的语句中,但是不能保存到下一次该函数的调用!! 你可能不理解,但是我没时间给你编程举例子,以后有时间在写。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-05
还是这么说吧...

形参上加储存类型是一个没规定的东西。像VC里就允许这么干,但是什么效果也没有。实参被保存在哪儿完全由调用方式决定。

49题
A. 把作用域混淆了,我也搞不清楚它想说life-time还是scope。局部变量的scope的话的确只和定义位置有关系。life-time的话则只有是函数内部局部变量才是这样
B. 太含糊了。不过绝对不是全局变量只能在cpp开头定义,某人说的有点不懂装懂了。使用前不声明当然编译会出错。当然,像结构体定义里就定义不了全局变量... 文字游戏么b
C. 全局变量有时候指全局生存期的变量。这种情况下static修饰的函数内部变量会被称作全局变量... 一样的含糊。
D. 只是为了只有一个函数使用的全局变量这样写方便吧.... 怪异的说法...本回答被提问者采纳
相似回答