zoukankan      html  css  js  c++  java
  • const常量详解

    const常量的定义

    在C语言中,采用编译指令#define方法定义常量,例如

    #define PI 3,14

    由于编译指令#define不是C++语句,所以行末不用分号,程序在预编译时把出现标识符PI全部用3,14替换,在程序预编译结束后,程序中就不再拥有PI这个标识符

    PI不是变量,没有类型,不占用存储单元。

    在C++中使用const定义常量有两种方式:

    方式1:

    const 类型 常量名 = 初始值;

    例如:const  double PI = 3,14;

    方式2:

    类型 const 常量名 = 初始值;

    例如:double const PI = 3,14;

    两种方式习惯上使用第一种。这里的PI拥有变量所有的属性,包含变量名,变量值,地址,只是在程序运行的过程中是固定不变的,只能读不能修改。

    所以使用const定义常量后,由于值不能修改,不能赋值,所以在定义常量是就必须初始化,例如

    const double pi;

    pi = 3.14;  //err

    const 指针

    1、指向常量的指针(常量指针)

    	//常量指针
    	const char* name = "liuzeyu12a";  //name指针指向一块常量
    	name = "helloworld";  //此时name又重新执行了新的内存,指向h
    	//*name = 'p';  //不能给常量赋值,所以const用来保护指针所指向的值不被修改
    	printf("%c
    ", *name);  //输出h

    指针的指向可以被修改,但是指向的值不能被修改。

    2、指针常量

    这里演示一种错误的方式:

    	//指针常量
    	//char str[] = "liuzeyu12a";
    	//char* const pc = str;
    	char* const pc = "liuzeyu12a";   //指向常量
    	//pc = "helloworld"; //指针的指向不能被修改
    	*pc = 'G';
    	printf("%c ", *pc);

    常量是不能够被修改的 = =

    正确的方法:

    	//指针常量
    	char str[] = "liuzeyu12a";
    	char* const pc = str;
    	//pc = "helloworld"; //指针的指向不能被修改
    	*pc = 'G';
    	printf("%c ", *pc);   //输出G

    指针指向不能被修改,但是指向的值可以被修改,这个被修改的一定只能是变量,常量不能够被修改。

    3、指向常量的指针常量

    		int a = 10, b = 20;
    		const int* const pt = &a;
    		pt = &b;  //err
    		*pt = 100; //err
    

     指针的指向和指针所指向变量的值都不能被修改。

  • 相关阅读:
    浏览器内核
    前端必读:浏览器内部工作原理
    原生ajax
    MySQL数据备份之mysqldump使用
    Es6里面的解析结构
    zabbix 自定义key与参数Userparameters监控脚本输出
    nagios 在nrpe中自定义脚本
    nagios client 端的安装配置 以及 svr端对应的配置(转)
    nagios-4.0.8 安装部署
    zabbix 主动模式和被动模式配置文件对比
  • 原文地址:https://www.cnblogs.com/liuzeyu12a/p/10542536.html
Copyright © 2011-2022 走看看