当前位置: 首页 > news >正文

const应用

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

1.修饰普通变量

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

#include <stdio.h>

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

2.修饰数组

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

#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 常量指针 

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

#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 指针常量

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

#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,可以防止函数内部修改传入的参数值

#include <stdio.h>

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

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

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

5.修饰函数返回值 

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

#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 进行修改。

相关文章:

  • 系统与网络安全------网络应用基础(2)
  • MySQL面试专题
  • 【设计模式】组合模式
  • AI究竟是人类助手还是替代者
  • 【时时三省】(C语言基础)选择结构和条件判断
  • 分布式爬虫框架Scrapy-Redis实战指南
  • 单链表的查找和插入,删除操作
  • python:AI+ music21 构建 LSTM 模型生成爵士风格音乐
  • flutter 自定义控件RenderObjectWidget使用
  • DeepSeek 协程API 调用与 vllm推理,llamafactory本地vllm部署
  • 神经网络解决非线性二分类
  • 穿越之程序员周树人的狂人日记Part2__重构人间Beta版
  • ngx_http_add_location
  • python速通小笔记-------3.Numpy库
  • 深入理解 Spring 框架中的 AOP 技术
  • Python----计算机视觉处理(Opencv:图像轮廓特征查找:外接轮廓)
  • 华为HCIE方向那么多应该如何选择?
  • Linux的SPI子系统的原理和结构详解【SPI控制器(spi_master)、SPI总线(device-driver-match匹配机制)、SPI设备、SPI万能驱动`spidev.c`】
  • 前端性能优化方案总结
  • ARCGIS PRO SDK 创建右键菜单
  • 山西太原一处居民小区发生爆炸,现场产生大量浓烟
  • 聚焦各领域顶尖工匠,《上海工匠》第十季于五一播出
  • 2025上海车展 | 当智驾不再让人兴奋,汽车智能化暗战升级
  • 书业观察|一本书的颜值革命:从毛边皮面到爆火的刷边书
  • 日趋活跃!2024年我国数据生产总量同比增长25%
  • 西班牙葡萄牙遭遇史上最严重停电:交通瘫了,通信崩了,民众疯抢物资