const应用

最近学校的花开了,选了一张三号楼窗前的白玉兰,(#^.^#)

1.修饰普通变量

const 用于修饰普通变量时,该变量的值在初始化之后就不能再改变。

cpp 复制代码
#include <stdio.h>

int main() {
    const int num = 10;
    // num = 20;  // 错误,不能修改常量的值
    printf("num 的值是: %d\n", num);
    return 0;
}

2.修饰数组

const修饰数组时,数组元素的值不能够被修改

cpp 复制代码
#include <stdio.h>

int main() {
    const int arr[3] = {1, 2, 3};
    // arr[0] = 10;  // 错误,不能修改常量数组元素的值
    for (int i = 0; i < 3; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

3.修饰指针

3.1 常量指针

指针指向的内容不能被修改,但指针本身可以指向其他地方。

cpp 复制代码
#include <stdio.h>

int main() {
    int num1 = 10;
    int num2 = 20;
    const int *ptr = &num1;
    // *ptr = 30;  // 错误,不能通过指针修改指向的内容
    ptr = &num2;  // 正确,指针可以指向其他地方
    printf("ptr 指向的值是: %d\n", *ptr);
    return 0;
}

在这个例子里,ptr 是一个常量指针,不能通过 *ptr 来修改其指向的值,但可以让 ptr 指向其他变量。

3.2 指针常量

指针本身的值不能被修改,但可以修改指针指向的内容。

cpp 复制代码
#include <stdio.h>

int main() {
    int num1 = 10;
    int num2 = 20;
    int *const ptr = &num1;
    *ptr = 30;  // 正确,可以修改指针指向的内容
    // ptr = &num2;  // 错误,不能修改指针本身的值
    printf("ptr 指向的值是: %d\n", *ptr);
    return 0;
}

在这段代码中,ptr 是一个指针常量,不能让 ptr 指向其他变量,但可以通过 *ptr 修改其指向的值。

4.修饰函数参数

在函数参数中使用 const,可以防止函数内部修改传入的参数值

cpp 复制代码
#include <stdio.h>

void printValue(const int num) {
    // num = 20;  // 错误,不能修改常量参数的值
    printf("传入的值是: %d\n", num);
}

int main() {
    int num = 10;
    printValue(num);
    return 0;
}

这里,printValue 函数的参数 numconst 修饰,在函数内部无法修改 num 的值。

5.修饰函数返回值

使用 const 修饰函数返回值,可让返回值成为只读的

cpp 复制代码
#include <stdio.h>

const int getValue() {
    return 10;
}

int main() {
    const int result = getValue();
    // result = 20;  // 错误,不能修改常量的值
    printf("返回的值是: %d\n", result);
    return 0;
}

在这个例子中,getValue 函数返回一个 const 类型的值,将其赋给 result 后,不能再对 result 进行修改。

相关推荐
小白羊丨1 小时前
如何诊断 Prompt 模板导致的效果下降?
人工智能·算法·prompt
OPEN-F2 小时前
C++11/14新特性精讲:移动语义与智能指针实战
开发语言·c++·算法
lisin-lee-cooper3 小时前
【leetcode658】有序数组找出k个最接近x的数
java·数据结构·算法
sunburn-3 小时前
Java堆(Heap)详解与实战教学
java·开发语言·数据结构·ide·算法
智碳能碳管理平台4 小时前
工业能耗台账标准化:能碳管理系统的数据口径怎么设计
算法·能碳管理系统·智碳能碳管理平台·企业能碳管理系统·碳排放核算软件·绿色工厂申报saas·能碳管理平台
带多刺的玫瑰4 小时前
Leecode#15刷题之三数之和
算法·leetcode·职场和发展
哭泣方源炼蛊4 小时前
并查集进阶 P1(带权并查集,并查集分类)
数据结构·c++·算法·二进制·带权并查集
牧羊人.3335 小时前
动手学深度学习 02 | 手写数字识别
图像处理·人工智能·深度学习·算法
武帝为此5 小时前
【InnoDB存储引擎介绍】
数据库·算法
shehuiyuelaiyuehao5 小时前
算法32,连续数组,前缀和+哈希表
算法·leetcode·职场和发展