const型变量和const型指针

const型变量和const型指针

const型变量

如果在程序中需要经常使用某一常量,可以使用编译预处理命令定义符号常量。

eg:#define PI 3.14159

const型变量也是一种定义常量的手段。const型变量是特殊的变量,程序运行过程中不可改变,其他特性和变量一样。定义const变量时必须初始化。

eg:

const int Max=1000; //int和const位置可以交换。

const常量与符号常量的区别:

1)符号常量由预编译器处理,const型变量由变量处理。

2)在编译时符号常量已经不存在了,而const常量依然存在。

3)符号常量的作用域从定义位置开始,到源文件结束,而const型变量和一般变量一样。

const型指针

1)指向常量的指针

关键字const 在最前面。它既可以指向常量,也可以指向变量,但是不能通过它修改它所指向的量。(指针可变,其所指向的内容不可变)

定义格式:const <数据类型> * <指针变量名>;

eg:

const int * p;

const int a=15;

int b;

p=&a;  //合法,p指向常量

p=&b;    //合法,p指向变量

*p=14;  //不合法,不能通过p间接地修改它所指向的量

2)指针常量

关键字在指针变量名之前。这种指针,不能改变指针的指向,即指针本身是常量,不允许重新赋值。必须在定义时初始化。(指针不可变,其所指向的内容可变)定义格式:<数据类型> * const <指针变量名>;

eg:

int a,b;

int * const p=&a;              //必须初始化

*p=15;  //合法,可以通过p间接访问变量a,给其赋值。

b=*p;   //合法,可以取出p所指向的值

p=&b;   //不合法,不可以给p重新赋值

3)指向常量的指针常量

定义格式有两个const。不能通过该指针改变它所指向的量,也不能指针本身指向。

eg:

int a,b;

const int * const p=&a;  //初始化

*p=15;   //不合法,不能通过p改变它所指向的量

p=&b;    //不合法,不可以给p重新赋值

b=*p;     //合法,取出p指向的量。

a=8;       //合法,a是独立的,其自身操作特性不受影响

4)快速判断const指针——看const 的位置。

const int a=18;  //常量指针,const在int前面

int * const p=&b;       //指针常量,const在p前面

时间: 2024-08-04 21:47:59

const型变量和const型指针的相关文章

oracle的引用型变量和记录型变量程序举例

--引用型变量 --打开oracle的输出口 --set serveroutput on declare --定义引用型变量,查询并打印1232的姓名和薪水 --pename varchar2(20);--这2句和下面的2句效果一致 --psal number; pename emp.ename%type; psal emp.sal%type; begin --得到1232的姓名和薪水 --赋值的方式有:=和into select ename,sal into pename,psal from

C++ const成员变量、成员函数和对象

const成员变量 const成员变量和const普通变量用法相似.初始化const成员变量只有一种方法,就是通过构造函数的初始化列表. const成员函数 const成员函数可以使用类中的所有成员变量,但是不能修改它们的值. 注意:const成员函数需要在声明和定义的时候在函数头部的结尾加上const关键字 函数开头的const用来修饰函数的返回值,表示返回值是const类型,也就是不能被修改. 函数头部的结尾加上const表示常成员函数,这种函数只能读取成员变量的值,而不能修改成员变量的值.

c++中的const参数,const变量,const指针,const对象,以及const成员函数

const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whenever you need”. 1.用const 修饰函数的参数 如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加const 修饰,否则该参数将失去输出功能.const 只能修饰输入参数: 如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地

const、变量与指针

代码: #include <stdlib.h> int main(void) { int arr1[] = { 1, 3, 5, 7, 9, }; const int arr2[] = { 2, 4, 6, 8, 10, }; // 普通的指针 int * p1 = arr1; // 可以改变指针指向的位置 p1 += 2; // 可以修改指针指向的值 *p1 = 2; // 指向常量的指针 const int * p2 = arr1; // 可以改变指针指向的位置 p2 += 2; // 不

类内const static(static const)成员变量初始化问题

在查找const相关资料的过程中,又遇到了另外一个问题,就是C++类中const static(或者static const)成员变量应当如何初始化的问题. 查阅了许多资料,发现VC环境下,只允许const static成员变量在类外初始化,这个应该是编译器遗留下的bug(你也可以说是要求严格). 在其他编译器下,整型以及枚举类型的const static成员变量是允许在声明的同时进行初始的,其中整型包括int.short.long.char等,非整型是指浮点型 包括float.double等.

C++中类中常规变量、const、static、static const(const static)成员变量的声明和初始化

C++类有几种类型的数据成员:普通类型.常量(const).静态(static).静态常量(static const).这里分别探讨以下他们在C++11之前和之后的初始化方式. c++11之前版本的初始化 在C++11之前常规的数据成员变量只能在构造函数里和初始化列表里进行初始化.const类型的成员变量只能在初始化列表里并且必须在这里进行初始化.static类型只能在类外进行初始化.static const类型除了整型数可以在类内初始化,其他的只能在类外初始化.代码如下: class A {

c++输出char型变量与字符串的地址

在c里面如果指针是一个基本数值型 int ,foalt ,long等,如果输出里有 cout << ptr << endl; 其中ptr是指针的名,则输出的值是指针的地址, 如果是char * (char指针) 则输出的是char指针的值. 在C++中,熟悉int和char型的变量是最基本不过的了,不过,我想,很多初学者会跟我一样,搞不懂如何输出一个char变量的地址?就举下面一个例子: int i=97; char c='a'; cout<<"line 1:

C++杂谈(一)const限定符与const指针

const限定符 c++有了新的const关键字,用来定义常变量,可以替C语言中的#define.关于const限定符,有以下需要注意: 1.创建后值不再改变 2.作用范围在文件内有效 3.添加extern关键字,使多个文件共用同一个常变量 另外,int const与const int是等效的. const指针 创建const指针时,const,*和变量类型的符号顺序会给人很大的困扰.一般来说,按照从右向左读的方式来判断其含义. 1. const int *p=&i; 与下面的语句等效. (co

c++ const: const 变量, const 输入参数, const 返回值, const 成员函数

看到const 关键字,C++程序员首先想到的可能是const 常量.这可不是良好的条件反射.如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的魅力是它可以修饰函数的参数.返回值,甚至函数的定义体. const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whenever you need”. 1.用const 修饰函数的参数