const关键字总结(C / C++)

1.const 含义

在 C/C++ 语言中,const关键字是一种修饰符。所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告诉编译器,被修饰的这些东西,具有只读的特点。在编译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。

2.const作用

,const修饰符的作用主要是利用编译器帮助我们检查自己代码的正确性。我们使用const在源码中标示出“不应该改变”的地方,然后利用编译器,帮助我们检查这些地方是否真的没有被改变过。如果我们不小心去修改了这些地方,编译器就会报错,从而帮助我们纠正错误。使用const和不使用const,对于最终编译产生的代码并没有影响。虽然const对于最终代码没有影响,但是尽可能使用const,将帮助我们避免很多错误,提高程序正确率。

3.const用法

C语言 :
① const 定义的变量可以初始化,也可以不初始化
② const修饰的量不能用于左值
③ 不能当作常量来使用,其实const修饰的应该叫做常变量
④ 常变量const的编译方式,和普通变量的编译方式一样

C++:
① const修饰的变量一定要初始化
② const定义的量叫做 常量,这是真常量,可以用其来定义数组长度
③ C++的常量也可以变为常变量,例如 如下代码:

int b =20;
const int a = b;
int array[a] ={0}; // 出错,编译时期b值不确定,且b为变量,不能用变量定义数组大小

④ 常量const的编译方式:若初始化给出立即数, 在编译时期,拿常量的值把常量的名字替换掉,若用变量初始化,将退化为常变量。

4.在有const的代码段中,一般出现问题,主要原因是:

(1)作为左值使用

 	const int b = 50;
 	b = 20;

(2)把const常量的地址或者引用给泄露出去了

	const int a = 20;
	int *p = &a; // 泄露a的地址,可能会修改a,可修改为 const int *p = &a
	int &b = a; 

5.const和指针的结合使用(常考点)

(1)const和一级指针的结合

	int a = 10;
	const int *p = &a; // const修饰 *p, 即*p不可改变, 但p的指向可以改变
	int const *p = &a; // 同上
	int *const p = &a; // p的指向不可改变, 但 *p可以修改
	// int *  = const int *  err
	// const int * = int * ok

(2)常引用变量,才能引用常量

	const int a = 10;
	const int &b = a; // const与引用结合这只有一种形式

(3)const和二级指针的结合

	int a = 10;
	int *p = &a;
	
	// const int **  = int **   err
	// int ** = const int **    err
	// int * = const int *      err
	// const int * = int *      ok

	// int *const * = int**  	ok
	// int ** = int *const *    err
	// int **const = int**      ok
	// int *const * = const int** err
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LSTM的财务因子预测选股模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值