当前位置:首页 » 编程语言 » conststaticc语言

conststaticc语言

发布时间: 2022-09-13 04:21:43

① const和static const的区别

const和static const的区别:

一、全局的区别

const规定变量在全局中是只读的变量,并且它的值无法被修改。

static const规定变量在当前的模块中是只读的变量,无法再全局中被其他模块读取。

二、文件的区别

const定义的指针,不赋初值编译时不报错,在初始化时应说明指针的指向。

static const不能在定义对象时对变量初始化,就是不能用构造函数来初始化。

三、函数的区别

const只能通过构造函数初始化列表进行,并且必须有构造函数。

static const是静态的,属于类的静态成员函数。

四、类的区别

const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同,所以不能在类声明中初始化const数据成员。

static const初始化在类体外进行,初始化时不加该成员的访问权限控制符private,public等,并且初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

c语言中const、static关键字的用法

const是指常数,这种数存放在rom中,也就是硬盘里,只有使用的时候才读取到内存。static类型的是局部静态数据,首先他肯定是局部变量,但是他的生存期是全局的。const数不能被修改,也不能是局部变量。static一般用于局部变量,但是他可以被修改,并且退出引用他的函数体后变量依旧存在,直到下一次引用时数值不变化。

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

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

④ c语言中const 与static的分析

const 仅仅是说在内存分配的同时就被初始化了,之后就不能更改了。
我觉得这分析不见得就对,使用全局的const变量固然能达到目的,但是太多的全局变量造成的结果是职责不明确,程序逻辑令人费解。更好的做法是,它适合在哪里就在哪里,比如有一个Circle类表示圆,里面有个const static double PI(static的目的是为了所有该类对象共享这个变量,否则会为每个该类的对象分配一个pi),表示圆周率,我觉得放在Circle类中是很合理,但是把它作为全局变量,在小程序里固然还是结果清晰,一旦程序大了,分成好几十个文件了,逻辑就乱了

⑤ 关于C语言中return以及static const的问题

return作为一个函数的返回值的
而static const是定义静态变量的

⑥ const在C语言中有哪些用法

const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08
C。
(1)可以定义const常量,具有不可变性。
例如:const
int
Max=100;
Max++会产生错误;
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
例如:
void
f(const
int
i)
{
.........}
编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
同宏定义一样,可以做到不变则已,一变都变!
如(1)中,如果想修改Max的内容,只需要:const
int
Max=you
want;即可!
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
还是上面的例子,如果在函数体内修改了i,编译器就会报错;
例如:
void
f(const
int
i)
{
i=10;//error!
}

⑦ 在C语言中,register,const,static,extern分别都是什么意思,有什么用

register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。
const限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。
static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。

⑧ c语言中const、static关键字的用法

  1. const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

  2. const可以修饰变量,函数的入参,函数的返回值

  3. static第一个作用:隐藏

    当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

  4. static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。

  5. static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。

⑨ C++面相对象的static const成员变量有什么作用是静态常量,不是单独的const或者static。

静态常量是类的变量的一种,首先是静态的,表示其在程序开始的时候就有了内存,是属于类的。
然后是常量,表示其值只能被赋一次。它是唯一可以这么赋值的成员函数,static const int a=11;
或者还能在类声明外面赋值,const int ATest::a=111;

⑩ c++ const和static有什么区别

系统不知道怎么回事,我接着hanwt139继续补充。
static的作用是把一个变量(这里的变量和上面说的概念一样,
都是泛指)设置为“静态”。
一般情况下,我们在子程序中定义的变量,在这个子程序运行
结束的时候都会被销毁,其值就丢失了。
如果用了static,则这个变量的值在子程序结束后依然被保留
。这个变量是否被销毁我不知道,但其值肯定被保留了。当你下次
运行该子程序时,该变量初始就为你最后一次调用子程序后该变量
的值。
但是,要注意,他和全局变量还是有区别的。在其他子程序中该
变量不能被使用。

热点内容
手机怎样给程序加密软件 发布:2025-01-12 06:47:11 浏览:824
地平线最高画质笔记本要什么配置才能玩 发布:2025-01-12 06:47:10 浏览:369
原神过主线任务脚本 发布:2025-01-12 06:34:51 浏览:513
医保电子密码在哪里找到 发布:2025-01-12 06:34:38 浏览:348
安卓手机有网却不能使用怎么办 发布:2025-01-12 06:25:20 浏览:212
arm存储器映射 发布:2025-01-12 06:25:12 浏览:250
安卓系统个人字典有什么用 发布:2025-01-12 06:13:37 浏览:929
geventpython安装 发布:2025-01-12 06:13:34 浏览:339
放松解压助睡眠直播 发布:2025-01-12 06:13:00 浏览:829
车载wince和安卓哪个好用 发布:2025-01-12 05:58:18 浏览:840