const在C和C++中的区别

个人认为C语言中的const用法比较单一点,在C语言中const只是一个关键字,常用来修饰变量、函数参数及其返回值而被它修饰的变量只能读而不能改变即被const修饰的变量是不可变的。

1)const 修饰一般变量

const int n; //error
const int n = 12;
//right 但当这两个一起编译则会出现重定义

所以在用const对一般变量进行修饰时不要出现对名的变量定义。另外const修饰的变量一定要在声明时进行初始化否则当你执行程序的时候就会发现程序有错(函数参数除外)。

2)const与指针搭配混用

①常量指针(const在*左边),例如:const int *p; int const *p;const修饰的是(*p),即是*p所指的内容(一个常量)。也就是*p现在所指的内容以后是不可改变的,但是指向这块内容的指针却是可以改变,即可以有多个指针指向这块内存,但这块内存里面的东西是不可更改的。

②指针常量(const在*右边),例如:int a; int * const p = &a; 在这里const修饰的是p,即p所指的内存是不可改变的,但是p所指的内存里面的内容却是可以改的。

③指向常量的常指针 例如:const char* const p = "1234"; const修饰的是指针变量p,即p所指向的内存是不能改变的,const 修饰的是*p,即p所指内存里面的内容是不可改变的。综上:p所指向的内存地址以及所指内存里面的内容都是所不能改变的。


C++中的const修饰完就变成了一个常量而在C语言中修饰完过后它是一个变量。例如:

C语言中:

int main()

{

const int n = 7;

int arr[n] = { 10,232,12 };

}


#include <iostream>
using namespace std;
#include <assert.h>
int main()
{
const int n = 7;
int arr[n] = { 10,232,12 };
cout << arr[2] << " " <<  arr[6] << endl;
}


总结:const 和一级指针的结合  <--->直接或间接可能修改const修饰的常量值
const int* ---> int*  wrong
int* ---> const int*  right
const 和二级指针的结合
const int** ---> int** wrong
int** ---> const int** wrong

#include <iostream>
using namespace std;
#include <assert.h>
int main()
{
const int a = 10;
int *p = &a;
cout << *p << endl;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值