常量

常量,常量表达式和const关键字修饰的只读变量都存储在.rodata只读数据段中

1.字面值常量 literal

  • 整形字面值 1230xff00ff
  • 字符常量,类型总是 int, 'a', '\n'
  • 宽字符常量 L'x', L'中文'
  • 枚举 enum WEEK {A=2, B, C}, 实际上是整型
  • 浮点 3.14 缺省为double类型
  • 指针常量 pointer constant, 较少用到,不可改指向
  • 字符串常量 string literal “hello”
    • 存储在字符数组中的,以NULL字节结尾的0个或多个的字符

    • 在表达式中的值是字符串的地址而不是字符本身,因此可以赋值给字符指针

    • 不能赋值给字符数组(仅仅支持初始化的特殊形式)

      char *p = "hello";  // 字符指针指向字符串常量
      
      char a[] = "hello"; // 字符数组初始化
      // 等价于
      char a[] = {'h', 'e', 'l', 'l', 'o', '\0'}

2.命名常量 Named constant

初始化:

  • 声明显示初始化
  • 作为函数形参隐式初始化

3.辨析

常量定义:const关键字 VS define宏定义

  • 变量和简单的字符串替换
  • constant并不能算是真正意义的常量,只是不可修改的变量,验证思路?

常量和指针

  • 常量指针 int const *p = &a; // 指向常量的指针,const修饰(*p), 改向不改值
  • 指针常量 int * const p = &a; // 指针类型的常量,const修饰p, 改值不改向

4.参考资料

  • 《C和指针》

    • 3.1 基本数据类型
    • 3.4 常量
  • 《嵌入式C语言的自我修养》
    • 7.7 常量和变量
  • 《C程序设计语言》
    • 2.3 常量

C语言之常量的更多相关文章

  1. C语言中常量

    C语言中常量 不具有数据类型的常量------宏常量 宏常量定义:用一个标识符号来表示的常量,又称为符号常量. 宏定义:  #define 标识符  字符串                 ----- ...

  2. C语言回顾-常量和变量

    1.C语言共32个关键字 1)数据类型关键字 a.基本数据类型 void char int float double b.类型修饰关键字 short long signed unsigned c.复杂 ...

  3. 李洪强漫谈iOS开发[C语言-013]-常量

    // //  main.m //  09 - 常量 // //  Created by 李洪强 on 16/7/17. //  Copyright © 2016年 李洪强. All rights re ...

  4. 「C语言」常量和变量的表示、应用和变量命名规则

    在程序运行中,其值不能改变的量成为常量. 在基本数据类型中,常量可分为整型常量.实型常量.符号常量和字符型常量(包括字符常量和字符串常量),现分别介绍如下: 目录: 一.常量 二.C语言标识符 三.变 ...

  5. go语言的常量

    Go 语言常量 常量是一个简单值的标识符,在程序运行时,不会被修改的量. 常量中的数据类型只可以是布尔型.数字型(整数型.浮点型和复数)和字符串型. 常量的定义格式: const identifier ...

  6. C语言 const常量讲解

    //const的本质 //const本质上是伪常量,无法用于数组初始化以及全局变量初始化 //原因在于const仅仅限定变量无法直接赋值,但是却可以通过指针间接赋值 //例如局部常量在栈区,而不在静态 ...

  7. 【学习笔记】【C语言】常量

    1. 什么是常量 常量,表示一些固定的数据 2. 常量的分类 1> 整型常量(int) 包括了所有的整数,比如6.27.109.256.-10.0.-289等 2> 浮点型常量(float ...

  8. 2.4.1-Java语言基础(常量)

    2.4.1 常量 常量表示不能改变的数值. Java中常量的分类: 1,整数常量.全部整数 2,小数常量.全部小数 3,布尔型常量.较为特有,仅仅有两个数值.true false. 4,字符常量.将一 ...

  9. c语言伪常量const理解

    const是伪常量,无法用于数组的初始化和全局变量的初始化,本质就是限定一个变量不能直接赋值. 如以下代码: #define A 10 int arr[A]; //const本质,伪常量 ,无法用于数 ...

  10. [Objective-C语言教程]常量(7)

    常量指的是程序在执行期间不会改变的固定值.这些固定值也称为文字.常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串文字.还有枚举常量.常量被视为常规变量,只不过它们的值在定义后无法修改 ...

随机推荐

  1. 记录实验室深度学习服务器显卡硬件故障的排查——RmInitAdapter failed! rm_init_adapter failed

    实验室突然通知我说是深度学习的服务器无法查看GPU,并且在GPU上运行的程序也halt on,需要解决.于是查询服务器的运行日志得到下面的信息: Nov 10 01:33:23 dell kernel ...

  2. DolphinScheduler 3.3.0版本更新一览

    Apache DolphinScheduler即将迎来3.3.0版本的发布,届时将有一系列重要的更新和改进.在近期的社区5月份用户线上分享会上,项目PMC 阮文俊为大家介绍了3.3.0版本将带来的主要 ...

  3. Vue-方法与事件

    基本用法 监听点击事件 v-on 缩写:@ 预期:Function | Inline Statement | Object 参数:event 修饰符: .stop - 调用 event.stopPro ...

  4. 实习记录day03:尝试写一个接口

    前言:今天突然意识到,实习记录很少有技术性的东西,更多的是自己的心里活动和一些感想,其实这类博客更趋向于日记而非技术记录.也许哪天不再充满兴趣了,这个实习记录也就结束了(想下班了同志们) 实习第三天: ...

  5. 掌握Java面向对象OOP篇(一)

    掌握面向对象OOP篇(一) 边学边记 -- OOP(Object Orientated Programing) 1. 为什么要引入面向对象? 原因:封装.继承.多态 举个例子理解面向对象代码的好处: ...

  6. 为什么重写hashCode一定也要重写equals方法?

    这是一个经典的问题,我们先从==开始看起 == "==" 是运算符 如果比较的对象是基本数据类型,则比较的是其存储的值是否相等: 如果比较的是引用数据类型,则比较的是所指向对象的地 ...

  7. 一键k8s企业级集群部署(以k8s的1.18.0版本为例)

    一.下载安装sealos wget https://github.com/fanux/sealos/releases/download/v3.2.0-beta.2/sealos && ...

  8. 猜数游戏[USACO2008] Haybale Guessing G

    $ Haybale \ Guessing \ G $ (猜数游戏) 解题报告 \(Diffculty:\) \(\color{purple}省选/NOI-\) 传送门1:(HZOIER) 传送门2:( ...

  9. 探索 Nuxt Devtools:功能全面指南

    title: 探索 Nuxt Devtools:功能全面指南 date: 2024/9/3 updated: 2024/9/3 author: cmdragon excerpt: 摘要:本文介绍了Nu ...

  10. 使用 nuxi init 创建全新 Nuxt 项目

    title: 使用 nuxi init 创建全新 Nuxt 项目 date: 2024/9/6 updated: 2024/9/6 author: cmdragon excerpt: 摘要:本文介绍了 ...