iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++编程中const如何使用
  • 525
分享到

C/C++编程中const如何使用

2023-06-29 19:06:07 525人浏览 独家记忆
摘要

这篇文章主要介绍“C/C++编程中const如何使用”,在日常操作中,相信很多人在C/c++编程中const如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++编程中const如何使用”的疑惑有所

这篇文章主要介绍“C/C++编程中const如何使用”,在日常操作中,相信很多人在C/c++编程中const如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++编程中const如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1 概述:const和define的区别

先看一个典型的程序:

#include<iOStream>using namespace std;int main(){int num = 1;#define t1 num + num#define t2 t1 % t1cout << "t2 is " << t2 << endl; // t2 is 2const int s1 = num + num;const int s2 = s1 % s1;cout << "s2 is " << s2 << endl; // s2 is 0    return 0;}

运行结果如注释所示,分别得到“t2 is 2”、“s2 is 0”???
分析原因:const定义的常量s1、s2,则s1的值是num+num,s2的值是s1%s1,所以最后结果为“s2 is 0”;而define定义的变量作替换后,C++把cout<<"t2 is "<<t2<<endl;语句译成了:cout<<"t2 is "<<num+num%num+num<<endl;所以结果为“t2 is 2”(1+0+1=2)

注意:define定义的内容,建议增加使用括号()

#define t1 (num + num)#define t2 (t1 % t1)

具体分析define与const的区别,如下定义:

const float PI = 3.14;#define PI (3.14)
  • 类型的安全性检查:const常量有数据类型,而define定义宏常量没有数据类型。则编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查(字符替换时可能会产生意料不到的错误,如上面的程序所示);

  • 调试:部分调度工具可以对const常量进行调度,但不能对宏常量进行调度;

  • 编译器的处理方式不同:define宏是在预处理阶段展开,const常量则是编译运行阶段使用;

  • 存储方式不同:define宏仅仅是展开,有几个地方使用则展开几次,不分配内存;const常量会在内存中分配地址(可以是堆中也可以是栈中);

  • 效率:define定义的常量在内存中有若干个拷贝;const定义的常量在程序运行过程中只有一份拷贝,甚至不为普通const常量分配存储空间,而是将它们保存在符号表中,相当于没有了读内存的操作,使得效率也很高。

2. 修饰局部变量

const约束对象的访问性质:使得对象只能读,不能写:不允许修改对象的值.

const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书籍建议:“Use const whenever you need”。

const int n=5;int const n=5;

这两种写法是一样的,都是表示变量n的值不能被改变了,需要注意的是,用const修饰变量时,一定要给变脸初始化,否则之后就不能再进行赋值了。

// C     const int num = 100;(int *)&num = 4;   //可以间接修改

C的const表示修饰只读变量,但是我们可以恶意强制操作const对象。

接下来看看const用于修饰常量静态字符串,例如:

const char* str="fdsafdsa";

如果没有const的修饰,我们可能会在后面有意无意的写str[4]=&rsquo;x&rsquo;这样的语句,这样会导致对只读内存区域的赋值,然后程序会立刻异常终止。有了const,这个错误就能在程序被编译的时候就立即检查出来,这就是const的好处。让逻辑错误在编译期被发现。

如下修改都是不允许的。

 // c++ const int i = 0;   //是一个右值,有内存实体 i = 11;          //错误:向只读变量‘i'赋值 const int a{1.1}; //错误:从“double”转换到“int”需要收缩转换,请初始化成相同类型的常量

3. 常量指针与指针常量

常量指针是指针指向的内容是常量,可以有一下两种定义方式。

const int * n;int const * n;

需要注意的是一下两点:

常量指针说的是不能通过这个指针改变变量的值,但是还是可以通过其他的引用来改变变量的值的。

int a=5;const int* n=&a;a=6;

指针常量是指指针本身是个常量,不能在指向其他的地址,写法如下:

int *const n;

需要注意的是,指针常量指向的地址不能改变,但是地址中保存的数值是可以改变的,可以通过其他指向改地址的指针来修改。

int a=5;int *p=&a;int* const n=&a;*p=8;

注意:区分常量指针和指针常量的关键就在于星号的位置,我们以星号为分界线,如果const在星号的左边,则为常量指针,如果const在星号的右边则为指针常量。如果我们将星号读作&lsquo;指针&rsquo;,将const读作&lsquo;常量&rsquo;的话,内容正好符合。int const * n;是常量指针,int *const n;是指针常量。

指向常量的常指针

是以上两种的结合,指针指向的位置不能改变并且也不能通过这个指针改变变量的值,但是依然可以通过其他的普通指针改变变量的值。

const int* const p;

4. 修饰函数的参数

根据常量指针与指针常量,const修饰函数的参数也是分为三种情况。

1、防止修改指针指向的内容

void StrinGCopy(char *strDestination, const char *strSource);

其中 strSource 是输入参数,strDestination 是输出参数。给 strSource 加上 const 修饰后,如果函数体内的语句试图改动 strSource 的内容,编译器将指出错误。

2、防止修改指针指向的地址

void swap ( int * const p1 , int * const p2 )

指针p1和指针p2指向的地址都不能修改。

3、以上两种的结合。

5. 修饰函数的返回值

如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。

例如函数:

const char * GetString(void);

如下语句将出现编译错误:

char *str = GetString();

正确的用法是

const char *str = GetString();

6. 修饰全局变量

全局变量的作用域是整个文件,我们应该尽量避免使用全局变量,因为一旦有一个函数改变了全局变量的值,它也会影响到其他引用这个变量的函数,导致除了bug后很难发现,如果一定要用全局变量,我们应该尽量的使用const修饰符进行修饰,这样防止不必要的人为修改,使用的方法与局部变量是相同的。

到此,关于“C/C++编程中const如何使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C/C++编程中const如何使用

本文链接: https://www.lsjlt.com/news/326107.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C/C++编程中const如何使用
    这篇文章主要介绍“C/C++编程中const如何使用”,在日常操作中,相信很多人在C/C++编程中const如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++编程中const如何使用”的疑惑有所...
    99+
    2023-06-29
  • C/C++编程中const的使用详解
    目录1 概述:const和define的区别2. 修饰局部变量3. 常量指针与指针常量4. 修饰函数的参数5. 修饰函数的返回值6. 修饰全局变量总结1 概述:const和defin...
    99+
    2024-04-02
  • C++中const如何使用
    本篇文章为大家展示了C++中const如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。const来修饰一个类的成员函数时,它并不仅仅是禁止修改类里面的数据,而且要求其里面用到的类的成员都是具有...
    99+
    2023-06-17
  • C语言中const如何使用
    这篇文章给大家介绍C语言中const如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。const可以说一种常量的声明的关键字,如const int a=2;变量a就是一个常变量,a的值不能被改变,这个改变是一定意义...
    99+
    2023-06-17
  • C#中如何使用 const变量
    C#中如何使用 const变量,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。static readonly与C# const变量,作用是一样的,无论访问修饰符是不是public...
    99+
    2023-06-17
  • C++成员函数中const如何使用
    本篇内容介绍了“C++成员函数中const如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!修饰入参首先我们要明白在C++中调用函数时存...
    99+
    2023-06-29
  • c++中const的用法
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • const在c++中的用法
    c++ 中的 const 用于声明不可变的数据,即常量,确保变量或对象在声明后不能被修改,提升数据完整性,提高代码可读性,并允许编译器优化。主要用途包括:1. 确保数据完整性;2. 提高...
    99+
    2024-04-28
    c++ 代码可读性
  • const在c++中的作用
    const 关键字在 c++ 中用于定义常量,即程序运行期间值不可改变的变量,包括:声明常量变量,如 const int max_size = 100;防止意外修改,确保编译时检测修改并...
    99+
    2024-04-26
    c++ 代码可读性
  • C++中的const怎么用
    本文小编为大家详细介绍“C++中的const怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中的const怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。const 是 constant 的缩写,...
    99+
    2023-06-27
  • 如何使用Dev C++编写C语言程序
    本篇内容介绍了“如何使用Dev C++编写C语言程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C语言是什么C语言是一门面向过程的、抽象化...
    99+
    2023-06-08
  • C# const常量怎么使用
    这篇文章主要介绍“C# const常量怎么使用”,在日常操作中,相信很多人在C# const常量怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# const常量怎么使用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • C#多线程编程Task如何使用
    这篇“C#多线程编程Task如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#多线程编程Task如何使用”文章吧。一...
    99+
    2023-06-29
  • C语言中的const在怎么使用
    这篇文章主要介绍了C语言中的const在怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中的const在怎么使用文章都会有所收获,下面我们一起来看看吧。const可以说一种常量的声明的关键字,如co...
    99+
    2023-06-16
  • C语言编程const遇上指针分析
    const关键字 可以有很多用处,比如: #define ROW 10 就代表ROW的值恒为10,不可修改。 而 const int ROW=10; 也可以将值恒定,无法修...
    99+
    2024-04-02
  • 如何使用C++中的网络编程函数?
    如何使用C++中的网络编程函数?在现代社会中,网络已经成为了人们生活中不可或缺的一部分。在软件开发领域中,网络编程更是其中的重要组成部分。C++作为一种强大的编程语言,提供了丰富的网络编程函数和库,使得开发者可以轻松地构建各种网络应用程序。...
    99+
    2023-11-18
    C++ 网络编程 函数使用
  • C++中const的简单用法
    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应...
    99+
    2023-06-03
  • C语言与C++中const的用法对比
    目录一、C语言中的const二、C++中的const三、进一步比较C和C++中的const四、const与宏的区别五、小结一、C语言中的const const修饰的变量是只读的,本质...
    99+
    2024-04-02
  • C++成员函数中const的使用详解
    目录修饰入参值传递址传递const修饰入参修饰返回值修饰函数总结const 在C++中是一个很重要的关键字,其不光可以用来修饰变量,还可以放在函数定义中,这里整理了其在函数中的三个用...
    99+
    2024-04-02
  • c++中const的作用和用法
    const 在 c++ 中表示不可变性,用于强制变量、函数参数或类成员保持常量,使其值在程序运行期间不可修改。具体用法包括:修饰变量以强制不可变性,如 const int my_age ...
    99+
    2024-05-01
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作