打印
[开发工具]

const的5种用法

[复制链接]
1766|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zerorobert|  楼主 | 2024-4-30 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学习C语言的朋友,一直对const不太理解,其实,const是个关键字,它用于声明一个只读变量。这意味着一旦给const变量赋了值,就不能再修改它。

const在程序设计中有很多的用途,这里列出的一些用法:
1.定义常量:const可以用来定义常量,这些常量在程序运行时不能改变。
比如这个代码:
const int MAX_SIZE=100。
在这个例子中,MAX_SIZE是一个常量,其值为100,不能被修改。

2.指向常量的指针:
constc可以修饰指针,使得指针指向的内容不能被修改。
比如下面这个代码:
const int *ptr=&some_variable; *pstr=42;
在这个例子中,pstr是一个指向const定义的指针,这意味着你不能通过pstr来修改它所指向的值。
当然,const也可以用来修饰指针本身,使得指针的值(即它指向的地址)不能被修改。
int some_variable = 42;int *const ptr = &some_variable;ptr = &another_variable;
在这个例子中,ptr是一个常量指针,指向some_variable。你不能改变ptr的值来使它指向另一个地址。

3. 指向常量的常量指针:
const可以同时修饰指针和指针指向的内容。
const int *const;ptr = &some_variable;*ptr = 42;
在这个例子中,pstr是一个指向const int 的常量指针,因此你不能通过ptr来修改它所指向的值,也不能改变pstr的值来使它指向另一个地址。

4.在函数参数中使用const:
当你在函数参数中使用const时,你向调用者保证这个函数不会修改传入的参数。这有助于增强代码的可读性和可维护性。
void print_array(const int *arr, int size) {for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);}printf("\n");
}
在这个例子中,print_array函数接受一个指向const int的指针作为参数,这意味着这个函数不会修改传入的数组。

5.在结构体和联合中使用const:
const也可以用于结构体和联合的成员,以保护这些成员不被修改。
总的来说,const关键字在C语言中提供了一种机制来声明只读变量和指针,从而提高了代码的可读性、可维护性和安全性。
通过正确地理解和使用const,你可以确保某些数据在程序运行时不会被意外修改。

使用特权

评论回复
沙发
xixi2017| | 2024-4-30 21:12 | 只看该作者
这个关键字我一般不用,我从来没主动用过。

使用特权

评论回复
板凳
usysm| | 2024-5-1 22:53 | 只看该作者
在类中,const关键字可以用来修饰成员函数,表示该函数不会修改类的任何成员变量。这通常用在拷贝函数、赋值运算符和析构函数中,以防止它们修改对象的状态。例如,void MyClass::copy(const MyClass& other) const表示copy函数是一个常量成员函数,它不会修改当前对象的任何成员变量。

使用特权

评论回复
地板
backlugin| | 2024-5-2 15:17 | 只看该作者
在模板编程中,const关键字可以用来确保模板参数是一个常量表达式,这样可以限制模板参数的使用范围,并且可以在编译期进行检查。

使用特权

评论回复
5
sesefadou| | 2024-5-4 16:35 | 只看该作者
当函数返回一个const类型时,表示返回的对象在后续代码中不能被修改。这有助于防止返回的对象被意外修改,增加程序的健壮性。例如,const string& getName()表示getName函数返回的字符串对象是一个常量引用,不能被修改。

使用特权

评论回复
6
phoenixwhite| | 2024-5-6 22:55 | 只看该作者
当const应用于函数参数时,它表示该参数在函数体内不被修改。这有助于提高代码的安全性和可读性,因为它明确告诉其他程序员这个参数在函数内是只读的。例如,void printArray(const int* arr)表示arr指向的数组内容在printArray函数中不会被修改。

使用特权

评论回复
7
phoenixwhite| | 2024-5-7 14:54 | 只看该作者
使用const修饰函数参数可以确保函数内部不会修改传入的参数。

使用特权

评论回复
8
1988020566| | 2024-5-7 19:38 | 只看该作者
const位于成员函数的后面时,表示该成员函数是一个常成员函数,不能修改类的成员变量

使用特权

评论回复
9
vivilyly| | 2024-5-8 16:50 | 只看该作者
使用const关键字时,需要确保变量的内存区域确实是只读的,以防止意外的修改。

使用特权

评论回复
10
Henryko| | 2024-5-8 21:58 | 只看该作者
const有没有办法变成可读啊

使用特权

评论回复
11
chenci2013| | 2024-5-9 15:10 | 只看该作者
使用const关键字定义一个常量,其值在程序运行过程中不可改变。

使用特权

评论回复
12
sesefadou| | 2024-5-10 10:02 | 只看该作者
const可以修饰普通变量,表示该变量的值不能被修改。例如,const int num = 10;声明了一个名为num的常量整数,其值为10,且在后续代码中不能更改这个值。当const修饰指针时,它表示指针指向的数据不能被修改。例如,const int* ptr = &num;声明了一个指向常量整数的指针ptr,它不能通过ptr来修改num的值。

使用特权

评论回复
13
averyleigh| | 2024-5-10 14:23 | 只看该作者
const应用于类对象、对象指针或对象引用时,它表示这些对象是不可变的,即它们的成员变量不能被修改。这在设计类时非常有用,特别是当类表示一个值类型且设计者希望确保类的内部状态在对象生命周期内保持不变时。例如,const MyClass obj;声明了一个MyClass类型的常量对象obj,其成员变量在对象的生命周期内不能被修改。

使用特权

评论回复
14
sheflynn| | 2024-5-10 21:20 | 只看该作者
指向常量的常量指针:既不能改变指向的地址,也不能修改它所指向的内容。

使用特权

评论回复
15
i1mcu| | 2024-5-12 17:01 | 只看该作者
使用const修饰函数返回值表示返回值不能被修改。这在返回指向静态或全局数据的指针时特别有用,以确保数据不会被意外修改。

使用特权

评论回复
16
Bowclad| | 2024-5-12 20:09 | 只看该作者
const放在常量区,不能更改

使用特权

评论回复
17
tabmone| | 2024-5-13 21:18 | 只看该作者
const关键字还可以用于限制指针本身,使其不能被修改。

使用特权

评论回复
18
ulystronglll| | 2024-5-14 18:13 | 只看该作者
在函数参数中使用const关键字,可以防止函数内部修改传入的参数值。

使用特权

评论回复
19
wwppd| | 2024-5-14 21:48 | 只看该作者
const关键字可以用于限制指针的指向,使其指向的内存区域不可被修改。

const int *p = &a; // 指向const变量的指针
int b = 20;
p = &b; // 可以改变指针指向的地址
*p = 30; // 不能通过指针修改指向的值,编译错误

使用特权

评论回复
20
uiint| | 2024-5-15 09:33 | 只看该作者
当const位于&的左侧时,表示引用的对象是常量,不能通过该引用修改所引用的对象。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

1601

帖子

0

粉丝