gjk718 发表于 2025-7-10 16:40:36

C语言常量

1,常量的定义
2.符号常量
标识符
字符串
宏定义

FishC 发表于 2025-7-10 16:41:47


C语言常量详解:

1. 常量的定义
常量是程序运行期间值不可改变的量,分为:

[*] 字面常量:直接写出的值(如 5, 3.14, 'A')
[*] 符号常量:用标识符表示的常量(需定义后使用)


2. 符号常量
通过标识符表示常量值,两种实现方式:

方式1:宏定义(预处理替换)
使用 #define 定义,无分号结尾:

#define PI 3.14159    // 定义浮点常量
#define MAX 100       // 定义整型常量
#define MSG "Hello"   // 定义字符串常量

特点:

[*] 预处理时直接替换文本
[*] 不占用内存空间
[*] 作用范围从定义处到文件结束


方式2:const 关键字(C99推荐)

const int MAX = 100;          // 整型常量
const char MSG[] = "Hello";   // 字符串常量

特点:

[*] 有类型检查更安全
[*] 占用实际内存空间
[*] 作用域遵循变量规则(块作用域/文件作用域)


3. 字符串常量
用双引号包裹的字符序列:

"FishC"   // 实际存储为 'F','i','s','h','C','\0'

注意:

[*] 自动添加结尾的 \0(空字符)
[*] 不可修改内容(存储在只读内存区)


使用示例:

#include <stdio.h>
#define GREET "你好,"// 宏定义字符串常量

int main() {
    const char name[] = "鱼油";// const字符串常量
    printf(GREET "%s!\n", name);
    return 0;
}
// 输出:你好,鱼油!


重要区别总结:

[*] 宏定义:文本替换,无类型,推荐用于全局常量
[*] const:类型安全,有内存地址,推荐用于局部常量



以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: C语言常量