1、 C++中不可以使用通过强转的方式转换代码。
C 语言中 cost 类型:
A:不可以用于数组
B:任何情况都可以强制去掉 const 属性。
C++语言中的 const:
语言是一种强类型:
A:可以用于数组,不从内存读取,常量表在寄存器生成
B:同一个语句内部,可以强制转换(C 语言的强制转换(),常量的内存已经实现修改
(常量没有从内存读取))
C:同一个语句块内部,可以强制转换(C++语言的强制转换 const_case<类型>)(要转换
的数据),常量的内存已经实现修改(常量没有从内存读取)。
D:函数之间作为参数调用,变量传递给常量引用,可以去掉 const 属性,变量会从内存
读取
E:函数之间作为参数调用,常量传递给常量引用,赋值不会生效,常量不会从内存读取。
C++管理内存:
const 常量:真实的内存我们实际已经修改成功了,编译器会优化,不会从内存读取
gcc,VC 最新版本都是从代码区存储常量表,常量在寄存器产生,不会从读内存读取,编译器
的优化
部分老版本 C++编译器,没有取地址,或者全局变量说明符,直接从寄存器产生,为了兼容
C,出现去地址,或者全局变量说明符,内存会分配常量的地址。
取变量名会不会读内存,常量会在寄存器产生,取地址就可以直接修改。
变量:传递给指向常量的指针,传递给常引用,都可以去掉属性,变量从内存读取。
#include<iostream>
#include <stdlib.h>
using namespace std;
void main1()
{
const int num = 5;
int a[num];
int i = 0;
for (auto data : a)
{
data = i++;
cout << data << endl;
}
system("pause");
}