当前位置:首页 > 数据库 > 正文

static关键字 static函数的作用

static关键字 static函数的作用

今天给各位分享static关键字的知识,其中也会对static函数的作用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!定义静态局部变量时使用的关...

今天给各位分享static关键字的知识,其中也会对static函数的作用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

定义静态局部变量时使用的关键字是什么

1定义静态局部变量时使用的关键字是static。如:staticinta;2另外声明同一项目中在本文件中使用、但在其它文件中定义的全局变量时使用的关键字是extern。如:externA;//变量A在其他文件中定义,这儿作声明。

在VB中,声明全局变量所使用的关键字是()AdimBpublicCstaticDauto

选B,public声明全局变量,dim和private声明模块变量,dim和static声明过程变量,VB中好像没有auto这个关键字,回答完毕。

C语言中关键字extern和static的区别是什么

你这个问题相当牛,几乎完全没有关系的两个关键字,区别确实不好回答。联系估计就是都是类型修饰符,区别太多。一般来说,extern修饰的是全局变量或者函数,表示外部引用。对于C++语言还有一个特殊用法,extern"C"表示该段程序应认为是C语言编写。

static一般表示局部静态变量,可以用在函数内,也可以用在文件内。

关键字static、Const、Volatile的作用是什么

在C语言中,关键字static有三个明显的作用:1).在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2).在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3).在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年DanSaks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:EmbeddedSystemsProgramming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着“只读”就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?constinta;intconsta;constint*a;int*consta;intconst*aconst;前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:2).通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。3).合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1).并行设备的硬件寄存器(如:状态寄存器)2).一个中断服务子程序中会访问到的非自动变量(Non-automaticvariables)3).多线程应用中被几个任务共享的变量假设被面试者正确地回答了这是问题(嗯,怀疑这否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。intsquare(volatileint*ptr){return*ptr**ptr;}下面是答案:1).是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。2).是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。3).这段代码的有个恶作剧。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:intsquare(volatileint*ptr){inta,b;a=*ptr;b=*ptr;returna*b;}由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:

C/C++中局部变量数组加上static关键字后存放于栈空间还是堆空间

我的理解,就是实例变量(也就是成员变量)的生命周期是跟随对象的。而对象实例化之后,存放在堆中,所有成员变量也会存在堆中。而类中的其他变量,如静态变量(也叫类变量)是存放在方法区中的。局部变量是属于方法的,也就存在栈中。

vb中定义静态局部变量的关键字

Dim,privat,static,其中static定义静态变量

如果你还想了解更多这方面的信息,记得收藏关注本站。

最新文章