const定义变量
const int a=100;
a=200;//这样是错误的,因为常量不能修改
int const a=100 与const int a=100相同,都是定义常量,不能修改a的值,也就是说修辞变量成常量
const修饰函数参数(这个参数不能动)
//因为被const修饰变成常量,所以不能进行++,所以错误
void func(const int temp)
{
temp++;
}
//因为常量temp得值给了a所以可以a++
void func(const int temp)
{
int a=temp;
a++;
}
const修辞指针
常量指针
const在*左侧为常量指针
表示修饰的是这个指针指向的内容不允许修改,这个指针的地址可以改变 常量指针
常量指针无法改变指针指向内容得值,可以改变指针指向,如果要改变指针指向内容就通过这个内容变量进行更改
常量指针就是没办法通过指针修改指向的内容,其他与指针没有区别
//常量指针
const *int a;
int const *a;
#include <stdio.h>
int main()
{
int a,b;
a=5;
const int *p=&a; //常量指针
//一下改变a中的内容为6, 如果不加const以下两中都可
//*p=6; //这样是错误的,就是指向常量的指针,不可以通过指针进行改变值
a=6;//这样是正确的指针无法取改变这个值,但是通过变量可以改变
printf("%d\n",*p);
return 0;
}
常量指针修改指向
#include <stdio.h>
int main()
{
int a,b;
a=5;
b=6;
const int *p=&a; //常量指针
//修改常量指针的指向
//常量指针就是没办法通过指针进行修改其中的内容,其他指针没区别
p=&b;
printf("%d\n",*p);
//输出为6
return 0;
}
指针常量
const在*右侧为指针常量,表示这个指针指向的地址没办法更改,指针指向地址的内容可以改变,也就是说这个指针只能指向这个空间。
#include <stdio.h>
int main()
{
int a,b;
a=5;
b=6;
int *const p=&a; //常量指针
//修改常量指针的指向
//常量指针就是没办法通过指针进行修改其中的内容,其他指针没区别
p=&b;//这样是错误的因为p是常量,没办法修改
*p=6;//这样是可以的
printf("%d\n",*p);
//输出为6
return 0;
}
总结:
常量指针,没办法通过指针改变指向地址的内容,可以改变指针的指向,const在*左侧
指针常量,没办法通过指针改变指向地址,可以改变指向地址的内容,const在*右侧
巧计指针常量 *(指针)const(常量)
常量指针 const(常量)*(指针)
const int *const p 表示指针的地址不可以修改,内容也不可以修改。
在C++类中有常函数的概念,比如在类中定义如下函数:
Void fun() const { }
像这种就是常函数,这种函数只能读取类中数据,不能修改