程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

C语言之const关键字的用法(const关键字的含义)

balukai 2025-03-17 15:57:53 文章精选 3 ℃

在C语言中,const关键字用于定义常量或限制变量的修改。它的主要作用是增强代码的可读性和安全性,防止意外修改数据。以下是const的常见用法及示例:


1. 定义常量

const可以用于定义常量,表示变量的值不可修改。

示例:

#include 

int main() {
    const int MAX_VALUE = 100; // 定义常量
    // MAX_VALUE = 200; // 错误:常量不可修改
    printf("Max Value: %d\n", MAX_VALUE);
    return 0;
}

2. 修饰指针

const可以修饰指针,限制指针的指向或指向的值。

(1)指向常量的指针(指针指向的值不可修改)

const int *p; // 指针指向的值不可修改
int a = 10;
p = &a;
// *p = 20; // 错误:不能通过 p 修改 a 的值
a = 20;     // 合法:直接修改 a 的值

(2)常量指针(指针本身不可修改)

int a = 10;
int *const p = &a; // 指针本身不可修改
*p = 20;           // 合法:可以修改指向的值
// p = NULL;       // 错误:不能修改指针的指向

(3)指向常量的常量指针(指针和指向的值都不可修改)

const int *const p = &a; // 指针和指向的值都不可修改
// *p = 20;             // 错误:不能修改指向的值
// p = NULL;            // 错误:不能修改指针的指向

3. 修饰函数参数

const可以用于修饰函数参数,防止函数内部修改参数的值。

示例:

#include 

void printArray(const int *arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
        // arr[i] = 0; // 错误:不能修改 arr 指向的值
    }
    printf("\n");
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    printArray(arr, 5);
    return 0;
}

4. 修饰函数返回值

const可以用于修饰函数返回值,表示返回值是常量,不可修改。

示例:

#include 

const int* getValue() {
    static int value = 100;
    return &value;
}

int main() {
    const int *p = getValue();
    printf("Value: %d\n", *p);
    // *p = 200; // 错误:不能修改返回值
    return 0;
}

5. 修饰结构体成员

const可以用于修饰结构体成员,表示该成员不可修改。

示例:

#include 

struct Point {
    const int x; // x 不可修改
    int y;
};

int main() {
    struct Point p = {10, 20};
    // p.x = 30; // 错误:x 是常量
    p.y = 40;   // 合法:y 可以修改
    printf("x: %d, y: %d\n", p.x, p.y);
    return 0;
}

6. 修饰全局变量

const可以用于修饰全局变量,表示该变量是常量,不可修改。

示例:

#include 

const int GLOBAL_VALUE = 100; // 全局常量

int main() {
    // GLOBAL_VALUE = 200; // 错误:全局常量不可修改
    printf("Global Value: %d\n", GLOBAL_VALUE);
    return 0;
}

7. 修饰局部变量

const可以用于修饰局部变量,表示该变量在作用域内不可修改。

示例:

#include 

int main() {
    const int localValue = 50; // 局部常量
    // localValue = 60; // 错误:局部常量不可修改
    printf("Local Value: %d\n", localValue);
    return 0;
}

8. 修饰字符串常量

const可以用于修饰字符串常量,防止修改字符串内容。

示例:

#include 

int main() {
    const char *str = "Hello, World!";
    // str[0] = 'h'; // 错误:不能修改字符串常量
    printf("%s\n", str);
    return 0;
}

总结

用法

描述

示例

定义常量

变量的值不可修改

const int MAX_VALUE = 100;

指向常量的指针

指针指向的值不可修改

const int *p;

常量指针

指针本身不可修改

int *const p = &a;

指向常量的常量指针

指针和指向的值都不可修改

const int *const p = &a;

修饰函数参数

防止函数内部修改参数的值

void func(const int *arr);

修饰函数返回值

返回值是常量,不可修改

const int* getValue();

修饰结构体成员

结构体成员不可修改

struct Point { const int x; };

修饰全局变量

全局变量是常量,不可修改

const int GLOBAL_VALUE = 100;

修饰局部变量

局部变量在作用域内不可修改

const int localValue = 50;

修饰字符串常量

防止修改字符串内容

const char *str = "Hello, World!";

const关键字的使用可以显著提高代码的安全性和可读性,建议在适当的地方使用它来限制变量的修改。

最近发表
标签列表