const在C和C++中的区别
来源:互联网 发布:php实现api接口 编辑:程序博客网 时间:2024/05/24 06:59
个人认为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;
}
- const在C和C++中的区别
- const 在c和c++中的区别
- const在C和C++中的区别
- const 在c和c++中的区别
- const在C和C++中的区别
- const在c和c++中的区别
- const在c和c++中的区别
- const 在c和c++中的区别
- const 在c和c++中的区别
- const在C和C++中的区别
- const在C和C++中的区别
- const在C和C++中的一个区别
- const在C语言和C++中的区别
- const在C语言和C++中的区别
- const 在C语言和C++语言中的区别
- C++中的const和C中的区别
- const在c/c++中的区别
- const在C与C++中的区别
- P3862数字对
- K
- dubbo配置方式
- redis(4)——redia数据库
- 迁移学习
- const在C和C++中的区别
- java反射:动态加载类
- Sublime Text 2中的快捷键
- 009day(break,continue语句的学习,OJ输入数据的处理)
- 进程间通讯-有名管道
- HTTP会话解释原理及应用
- Spring Boot + Mybatis + Redis二级缓存
- SpringMVC 国际化-中英文切换
- Java中范型通配符