关于 const的理解

一、常见写法
1.const int p; // p is a int const. p是一个int型常量

2.const int *p; //p is a point to int const. p是一个指针,指向int型常量。即p是一个指向int型常量的指针。

3.int const* p; //与2相同 const int 和 int const 是一样的意思。

4.int * const p; // p is a const point to int. p是一个指向int的const指针

5.const int * const p; //p is a const point to int const. p是一个指向int型常量的const指针。

6.int const * const p; //同5

1、const 的理解
const 是C语言的一个关键字,const 关键字是把变量变为一个只读的变量(也就是不可以作为左值)不是将这个变量变为常量。经过const 修饰的变量成为只读的变量之后,这个变量就只能作为右值(只能赋值),绝对不能成为左值(不能接收赋值)。

C++ 则是将 const 修饰的常量变为一个真正的常量(变量的内容不可以被修改), 这一点的区别需要进行注意。当 const 变量的时候,就将这个常量放在符号表里面,编译的过程中发现使用了变量,那么就从符号表里面的值进行替换。

1.经过const 修饰的变量,在定义的时候,就要进行初始化。

  • const int a = 10; // 正确
    const int a; // 错误

2.const 关键字可用来限定函数的形参

  • func(const char *ptr){ }
    func 函数将不会修改实参指针所指的数据,但是其他的函数却可以修改他。

2.1指向const的指针(即一个指针,指向const 类型的)

  • const int *p // 一般式:指针P所指向的内容(*P)所指向的内容是 const int 类型。
    int const *p : 指针P指向的内容是 const int 类型的,所指向的内容是不能被修改。
    总结:指针指向随意,但地址的值不能改变
    3、const 指针(const 类型的指针(指针变量的地址)指向不能改变,但地址的内容可以改变)

  • int * const p = &。。 // 因为P 所指向的地址是不能被修改,必须被初始化
    指针P是指向了 int 类型的 const 指针。地址不能改变,但是地址所保存的数值确实可变的,比如:*p = 3;

4、指针指向和内容都是不可变的

  • const int * const p = &a;
    int const * const p =&b;
    指针P前面有 const 进行修饰,即 P 指针就是一个指针常量,地址就被固定,要进行初始化。
    对于 *p 而言,前面有 const 进行修饰,(*p )(p 指向地址)就是一个常量,不能被改变。

5、理解记忆

  • const在星号前,即指向const 的指针, *p 的内容是常量,不能被改变。
    const 在星号后,const 类型的指针,必须进行初始化,指向地址不能内改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值