在c语言中,关键字static有三个明显的作用:1)在函数体中,一个声明为static的变量在这个函数的调用过程中保持其值不变。
2).在模块内部(但在函数外部),声明为静态的变量可以被模块中使用的函数访问,但不能被模块外部的其他函数访问。它是一个局部全局变量。3).在模块中,声明为静态的函数只能由该模块中的其他函数使用。打。也就是说,这个函数被限制在声明它的模块的局部范围内。大部分考生能正确回答第一部分,有些能正确回答第二部分,很少有人能理解第三部分。这是一个考生的严重缺点,因为他显然不我不知道本地化号码。数据和代码范围的好处和重要性。当我听到被采访者说"const的意思是不变的,我知道我在和一个外行打交道。去年,丹·萨克斯在他的文章中完整地总结了const的所有用法,所以esp(译者:e。嵌入式系统编程)应该非常熟悉const能做什么和不能做什么。如果你从未读过那篇文章,就说const的意思是"只读"。虽然这个回答并不是结束所有的答案,但我接受它为正确答案。如果你想知道更详细的答案,请阅读saks的文章仔细。如果考生能正确回答这个问题,我会额外问他一个问题:下面这些说法是什么意思?常数intaintconstaconstint*aint*constaintconst*aconst前两者的作用相同,a为常数整数。第三个意味着a是一个指向常量整数的指针(也是也就是说,整数不能被修改,但是指针可以。第四个含义a是一个常量指针,指向一个整数(即指针指向的整数可以修改,但指针不能修改)。最后一个意味着a是一个指向常量整数的常量指针(也就是说,指针指向整数到不能修改,指针也不能修改)。如果候选人能正确回答这些问题,那么他给我留下了很好的印象。顺便说一下,你可能会问,即使你不不要使用关键字const,it编写一个功能正确的程序还是很容易的。那么我为什么这么看重const这个关键词呢?我还有以下原因:2)通过给优化器一些额外的信息,使用关键字const可能会产生更紧凑的代码。3).合理使用关键字const可以使编译器自然。保护那些不并防止它们被代码无意中修改。简而言之,这样可以减少bug的发生。定义为volatile的变量意味着该变量可能会被意外更改,因此编译器不会采用该变量的值。精确地也就是说,优化器必须在每次使用这个变量时仔细地重新读取它的值,而不是使用存储在寄存器中的备份。下面是一些易变变量的例子:1)。并行设备的硬件寄存器(如状态寄存器)2)。一个将在中断服务子程序(3)中访问的非自动变量。多线程应用中几个任务共享的变量假设受访者正确回答了这个问题(好吧,我怀疑会不会是这样),我就稍微深究一下。让让我们看看这个人是否完全理解volatile的重要性。intsquare(volatileint*ptr){return*ptr**ptr}下面是答案:1)。是的。一个例子是读取状态寄存器。它是易变的,因为它可能会被意外地改变。它是常量,因为程序不应该试图修改它。2).是的。虽然这不是很常见。一个例子是当服务子例程修改指向缓冲区的指针时。时间。3).这段代码中有一个恶作剧。这段代码的目的是将指针*ptr返回到值的平方,但是由于*ptr指向一个volatile参数,编译器将生成类似如下的代码:intsquare(volatileint*ptr){inta,ba*ptrb*ptrreturna*b}由于*ptr的值可能会意外更改,所以a和b可能会不同。因此,这段代码可能不会返回您期望的平方值!正确代码如下所示:
java中不能使用const。
1.可以使用final关键字。
2.比如finalintm9。声明为final的变量不能再次赋值。final也可以用于声明方法或类,声明为final的方法或类不能被继承。
3.注意const是java的保留字,用于扩展。const-string意味着定义的字符串常量不能在任何地方更改。