const增強
-
c語言中const是偽常量,可以通過指針修改
-
c++中const會放到符號表中
-
c語言中const默認是外部連接,c++中const默認是內部鏈接
#include<iostream> using namespace std;const int m_a = 10; //在全局區域里,受到保護,不可以被更改 /*c語言中,const修飾的變量,是偽常量,編譯器是會分配內存的、c++中,const不會分配內存,const int m_B=20;*/void test07(){//m_a = 100; 不允許被修改const int m_B = 20;//m_B = 100; 不允許被修改int *p = (int *)&m_B;//*p指向的是臨時的那塊空間,臨時空間看不到,臨時的空間被更改,但m_B沒有被改*p = 200;printf("*p=%d,m_B=%d\n", *p, m_B);//c中*p 和m_B都是200//c++中m_B為20,沒有被更改} int main(){test07();system("pause");}
const分配內存情況
-
對變量取地址,會分配臨時內存
-
extern關鍵字下的const會分配內存
-
用普通變量初始化cosnt變量
-
自定義數據類型會分配內存
#include<iostream>#include<string>using namespace std;//1.const分配內存,取地址會分配臨時內存//2.extern 編譯器也會給const 變量分配內存void test01(){const int m_A = 10;int *p = (int *)&m_A;//會分配臨時內存}//3.用變量初始化const的變量void test02(){int a = 10;const int b = a;//會分配內存int *p = (int *)&b;*p = 1000;cout << "b= " << b << endl;}//4.自定義數據類型 加const也會分配內存struct Person{string m_Name; //姓名int m_Age;};void test03(){const Person p1;//p1 m_Name = "aaa";Person *p = (Person*)&p1;p->m_Name = "德瑪西亞";(*p).m_Age = 18;cout << "姓名 " << p1.m_Name << "年齡 " << p1.m_Age << endl;}int main(){test03();system("pause");return 0;}