变量定义与const变量定义

知识综合 专栏收录该内容
44 篇文章 0 订阅

变量定义与const变量定义

一般变量

1)一个整型数 int a

2)一个指向整型数的指针 int *a

3)一个指向指针的指针,它指向的指针是一个整型数int **a

4)一个有10个整型数的数组 int a[10]

5)一个有10个指针的数组,该指针指向一个整型数 int *a[10]

6)一个指向有10个整型数数组的指针 int (*a)[10]

7)一个指向函数的指针,该函数有一个整型参数并返回一个整型数 int (*a) (int)

8)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 int (*a[10]) (int)

const变量

  • 便于进行类型检查(针对宏常量而来的)
  • 可以保护被修饰的东西(针对函数参数而来的)
  • 可以很方便地进行参数的调整和修改(针对修改只需改值,类似宏变量)
  • 为函数重载提供一个参考(函数返回值静态)
  • 可以节省空间,避免不要的内存分配(针对#define而来)
  • 提高效率(保存在符号表中而非分配存储空间)
1const int a a是一个**常整型数**

2int const a a是一个**常整型数**

3const int \*a a是一个指向**常整型数**的指针

4int const \*a a是一个指向**常整型数**的指针

5int * const a a是一个指向整型数的**常量指针**

6int const * a const a是一个指向**常整型数**的**常指针**

7const int * const a a是一个指向**常整型数**的**常指针**

8)指针本身是常量不可变 (char*) const p 或 const (char *) p

9)指针所指向的内容是常量不可变 const (char) *p 或 (char) const *p

10)指针和内容均不可变 const char * const p

const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;

const位于*的右侧,则const就是修饰指针本身,即指针本身是常量。

函数中使用const

1)修饰参数

  • 传递归来的参数在函数内不可改变 void fun(const int var)
  • 参数指针所指内容为常量不可改变 void fun(const char* var)
  • 参数指针本身为常量不可改变 void fun(char * const var)
  • 参数为引用,增加效率同时防止修改
  • 引入参数在函数内不可以改变 void fun(const Class& var)
  • 引入参数在函数内为常量不可改变void fun(const type& var)

2)const修饰函数返回值

  • const修饰函数返回值,意义不太。
  • 无意义函数(原因返回本身赋值,但值又不能边,故无意义) const int fun()
  • 函数看做指针,指针内容不可变 const int *fun()
  • 函数看做指针,指针本身不可变 int * const fun()

3)与类相关的const

  • 修饰成员变量,则成员变量不能被修改
  • 修饰成员函数,表示该成员函数不能修改成员变量,也不能调用任何非const成员函数
  • 修饰类对象,表示该对象为常量对象,其中的任何成员不能被改变。对于兑现指针的对象引用也一样。此外,const修饰的对象的任何非const成员函数都不能被调用。

将const类型变量转换为非const类型的方法是使用const_cast进行转换。转换具体方法如下:const_cast

  • 1
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值