const static在c c++中的作用

转载 2012年03月26日 12:26:54

const static在c c++中的作用

一.C语言中的const

    const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用const可以在一定程度上提高程序的健壮性,但是程序中使用过多的const,可能在对代码的阅读时增加一定的难度。

1)用const修饰一般变量

       注意在C语言中,用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外);

       如:

       const int n;  这种声明方式是错误的

       const int n=5; 正确

       void fun(const int n); 正确

       const char a; 错误

       char * const p;  错误

       const char *p;正确(注意这种为什么是正确的),因为这里const是修饰p指向的变量,而不是指针变量p本身 

       一旦一个变量被const修饰后,在程序中除初始化外对这个变量进行的赋值都是错误的。

      如:

      const int n=5;

      n=3;    错误

   (2)const与指针搭配使用

      首先必须弄清楚两个基础概念:指针常量和常量指针

      指针常量:即指针本身的值是不可改变的,而指针指向的变量的值是可以改变的;

      常量指针:即指针指向的变量的值是不可改变的,而指针本身的值是可以改变的;

二.C++中的const

    C语言和C++中的const有很大区别。在C语言中用const修饰的变量仍然是一个变量;而在C++中用const修饰过后,就变成常量了。

   如:

   
const int n=5;int a[n];

这种方式在C语言中会报错,原因在于声明数组时数组的长度必须为一个constant,即常量,虽然n用const限定了,但n终究是一个变量,因此会报错;

但是在C++中不会报错,因为在C++中用const修饰过后,n就已经等同于一个常量了,因此可以通过。

 

static

C语言时代的static 
       在C语言中,只存在函数和变量。
             A、函数和全局变量,一旦加上static关键字,就限制了其作用域为本文件有效。
             B、局部变量,一旦加上static关键字,其生命其为整个应用程序。
C++语言时代的static
      在C++语言中,除了向C语言兼容外,提供了类的支持,同样static在C语言的特性在C++同样有效。
             C、类的static关键字,在C++的类中,static只能用于修饰数据成员和函数成员(不能修饰构造函数和析构函数),用于该类所具有的信息而不属具体某个对象.
             D、<注意>如果在类的成员函数中定义了static局部变量,其值会在所有对象中共享!这一点不好!

C++中const和static关键字的作用总结

static和const关键字的作用可以从两个方面回答:一是和类的成员函数或者成员变量相关,二是不属于类的函数或者变量。 static关键字的作用: 1、函数体内static变量的作用范围为该函数体,...
  • u010182186
  • u010182186
  • 2016年09月26日 17:05
  • 1026

简述static关键字在c/c++中的作用

在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。 2) 在模块内(但在函数体外),一个被声明为...
  • qq_36631758
  • qq_36631758
  • 2017年07月27日 12:51
  • 1140

static const等类型在内存中的分配

1:一个由c/c++编译的程序的内存分为以下几个部分     1:BSS         存放全局数据和静态数据     2:DATA       存放常量字符串     3:CODE      代码...
  • kaixina204
  • kaixina204
  • 2010年12月08日 11:10
  • 843

const在C++中的作用

   说到const在C++中的作用,只要有一定经验的程序员就不会仅仅想到它是用来标识常量。关于const的作用在很多书上都有讲解,在这里说到const可能并没有什么新的东西,只能说是一起来复习一下c...
  • lidoublewen
  • lidoublewen
  • 2009年07月04日 00:27
  • 3918

C++中的const,static const和static类成员的初始化问题

C++中, const, static const, static这三种类成员的初始化容易出问题: const 作为类成员,只能在构造函数初始化列表中被初始化; static 作为类成员,所有类对象共...
  • HKaisa
  • HKaisa
  • 2016年05月08日 21:13
  • 1062

C++ static、const和static const、引用以及它们的初始化

const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。       static表示的是静态的。类的静态成员函数、静态成员变量是和类相...
  • huthnli
  • huthnli
  • 2014年09月07日 23:04
  • 1042

C++中成员变量加上static或const关键字后的分析

C++中类成员变量加上static或const关键字后的初始化问题。在一个简单的C++类中定义如下这些变量: #include using namespace std; class TestVa...
  • u012501459
  • u012501459
  • 2015年03月09日 11:15
  • 2262

OC中 static 与 const 的作用

相信大家在学习OC中经常使用static 和const,但是好多人并不知道他们的具体作用. 为此,我花费了大量的时间来总结他们的作用.  首先,我们来讲一讲static的作用: 1.在函数体内定...
  • caoxin406
  • caoxin406
  • 2015年07月28日 20:29
  • 3591

const static 与static const的使用

 查看文章  C++ static、const和static const 以及它们的初始化2010-03-29 15:30C++   static、const和static const 以及它们的初始...
  • weishan521520
  • weishan521520
  • 2010年09月20日 15:17
  • 17106

static const extern在C与C++中的区别

C中const的用法: 1, 在定义变量时使用(由于const常量在定义后不能被修改,所以在定义时一定要进行初始化操作): a)  最简单的用法,说明变量为一个常变量(在以下例子里,int 和co...
  • CC285494320
  • CC285494320
  • 2016年06月02日 18:40
  • 444
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:const static在c c++中的作用
举报原因:
原因补充:

(最多只允许输入30个字)