一.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 关键词
1. C语言时代的static
在C语言中,只存在函数和变量。
A、函数和全局变量,一旦加上static关键字,就限制了其作用域为本文件有效。
B、局部变量,一旦加上static关键字,其生命其为整个应用程序。
2. C++语言时代的static
在C++语言中,除了向C语言兼容外,提供了类的支持,同样static在C语言的特性在C++同样有效。
A. 类的static关键字,在C++的类中,static只能用于修饰数据成员和函数成员(不能修饰构造函数和析构函数),用于该类所具有的信息而不属具体某个对象.
B. <注意>如果在类的成员函数中定义了static局部变量,其值会在所有对象中共享!这一点不好!
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 关键词
1. C语言时代的static
在C语言中,只存在函数和变量。
A、函数和全局变量,一旦加上static关键字,就限制了其作用域为本文件有效。
B、局部变量,一旦加上static关键字,其生命其为整个应用程序。
2. C++语言时代的static
在C++语言中,除了向C语言兼容外,提供了类的支持,同样static在C语言的特性在C++同样有效。
A. 类的static关键字,在C++的类中,static只能用于修饰数据成员和函数成员(不能修饰构造函数和析构函数),用于该类所具有的信息而不属具体某个对象.
B. <注意>如果在类的成员函数中定义了static局部变量,其值会在所有对象中共享!这一点不好!
发表评论
-
error LNK2005 and error LNK2019
2012-08-09 23:08 1106error LNK2005 and error LNK2019 ... -
LIBCD.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSV
2012-08-07 09:20 1389LIBCD.lib(crt0dat.obj) : error ... -
在VS2010下配置VC++ Directories
2012-08-07 08:29 10491:可以 在“class View” 面板 -> 右 ... -
零星笔记,待整理
2010-11-01 13:00 482//用 getline 函数从输入读取整行内容。然后为 ... -
VC: error LNK2019:unresolved external symbol *** referenced in function ***的解决方案
2010-10-30 21:13 2113当头文件中声明了一个函数,但是在相应的源文件中却没有对该函数进 ... -
stdcall cdecl fastcall thiscall naked call的具体含义
2010-10-30 18:54 964在C语言中,假设我们有 ... -
#define总结 (网上资料汇集)
2010-10-30 08:06 7201. 定义简单的常数:定义常量,便于修改(切不可在后面加上分号 ... -
(zz)编译与使用Qt4,Visual Studio Express 2008
2010-10-14 22:35 1377一、Qt版本 我现在用的是4.5.2。好像前段时间4.6出来 ... -
strcat 内部实现
2010-09-21 00:43 1800char * strcat(char * dest, ... -
deep copy & shallow copy
2010-09-15 19:27 818A shallow copy of an object cop ... -
reinterpret_cast的本质(转)
2010-09-14 23:15 1617先看看下面的代码: #include <iostr ... -
C++ 经典书籍
2010-09-14 16:18 1687下载地址: http://www.51cnnet.net/di ... -
内存对齐的规则以及作用
2010-09-14 00:14 689首先由一个程序引入话 ... -
[转]C++ reinterpret_cast,const_cast等 显式类型转换总结
2010-09-13 23:23 1013#include<iostream.h> ... -
C++提供了四种新的类型强制
2010-09-13 23:13 689static_cast const_cast reinte ... -
C++著名程序库的比较和学习经验
2010-09-13 19:30 8271、C++各大有名库的介绍——C++标准库 2、C++各大有名 ... -
c++ library and resource List
2010-09-13 18:56 9021,前言 无数次听 ... -
C++中操作符operator的两种用法
2010-09-12 02:23 11191.operator overloading C++可能通过o ... -
两种自动类型转换:构造函数与operator
2010-09-12 02:23 894如果有两个对象:one, two, 要想把one转换成为two ... -
C++中的类拷贝构造函数和模板拷贝构造函数
2010-09-11 20:53 3006类(包括模板类)构造函数是真实的构造函数;然而模板构造函数,其 ...
相关推荐
徐彤老师耗时三年倾心制作,专业录制,通俗想,细致的讲解了C++ 编程从入门到高级
static,const,static const,const static是c++中几个常见的很容易弄混淆的几个概念,在这里总结了一下,与大家分享!
浅谈C++中的几个关键字static,const,inline.doc 浅谈C++中的几个关键字static,const,inline.doc
一、关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。 static 的两大作用: 一、控制存储方式 static...
C语言中关键字const、static、volatile、extern、auto、register的用法分析
主要介绍了C++ 中 const和static readonly区别的相关资料,需要的朋友可以参考下
徐彤老师耗时三年倾心制作,专业录制,通俗,细致的讲解了C++ 编程从入 门到高级
以前都不太清楚,搜集了大虾们的见解,终于明白了。也拿给大家看一下。
C/C++ 嵌入式 一些关键字: volatile关键字 Const关键字 static关键字 mutable 关键字
const,extern,static,volatile的使用
static和const是C++程序设计中非常重要的概念,本文实例列举了C++类中的static和const的规则和用法。供大家参考借鉴。具体说明如下: 首先以代码用来举例说明。示例代码如下: class A { public: A():m(10) //...
徐彤老师耗时三年倾心制作,专业录制,通俗,细致的讲解了C++ 编程从入 门到高级
徐彤老师耗时三年倾心制作,专业录制,通俗,细致的讲解了C++ 编程从入门到高级
徐彤老师耗时三年倾心制作,专业录制,通俗,细致的讲解了C++ 编程从入门到高级
在头文件的类的定义中定义了一个const成员变量c++ 规则: 1、类定义中不能进行初始化,因为头文件中类的定义只是一个声明,并没有分配真正空间,因此变量是不存在的,因此是不能赋值的。 2、const 定义的变量是不能...
C/C++问题总结 1. 关键字 1.1 const 1.1.1 常量 1.1.2 修饰指针 1.1.3 修饰函数参数与返回值 1.1.4 类中的应用 1.2 static 1.3 volatile 1.4 extern 2. 函数 2.1 sizeof与strlen区别 2.2 strcpy、sprintf与memcpy ...
标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义) ----自 core c++ static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问...