const編譯器
『壹』 在C++中,編譯器為const常量分配內存空間嗎
在C語言中,用const定義的常量其實是值不能修改的變數,因此會給它分配存儲空間;但是在C++中,const定義的常量要具體情況具體對待:對於基本數據類型的常量,編譯器會把它放到符號表中而不分配存儲空間,而ADT/UDT的const對象則需要分配存儲空間(大對象)。還有一些情況下也需要分配存儲空間,例如強制聲明為extern的符號常量或取符號常量的地址等操作。
『貳』 計算機C語言中的關鍵字:const是什麼意思
const
修飾數字的話就表示為常數
const
修改指針的話就表示指針指向的地址不可改變(地址中存的值可以變)
『叄』 C++中const什麼意思
在標准C++中,這樣定義的是一個常量,用來修飾內置類型變數,自定義對象,成員函數,返回值,函數參數。
const使用(類型):
1、用於指針的兩種情況:const是一個左結合的類型修飾符.
int const*A;//A可變,*A不可變
int*const A;//A不可變,*A可變
2、限定函數的傳遞值參數:
void function(const int Var);//傳遞過來的參數在函數內不可以改變.
3、限定函數返回值型.
const int function();//此時const無意義
const myclassname function();//函數返回自定義類型myclassname.
4、限定函數類型.
void function()const;//常成員函數,常成員函數是不能改變成員變數值的函數。
(3)const編譯器擴展閱讀:
總結:
1、指針本身是常量不可變
(char*) const pContent;
const (char*) pContent;
2、指針所指向的內容是常量不可變
const (char) *pContent;
(char) const *pContent;
3、 兩者都不可變
const char* const pContent;
4、其中區別方法:
沿著*號劃一條線,
如果const位於*的左側,則const就是用來修飾指針所指向的變數,即指針指向為常量;
如果const位於*的右側,const就是修飾指針本身,即指針本身是常量。
5、const修飾函數參數
const修飾函數參數是它最廣泛的一種用途,它表示函數體中不能修改參數的值(包括參數本身的值或者參數其中包含的值)。它可以很好
void function(const int Var); //傳遞過來的參數在函數內不可以改變(無意義,因為Var本身就是形參)
void function(const char* Var); //參數指針所指內容為常量不可變
void function(char* const Var); //參數指針本身為常量不可變(也無意義, 因為char* Var也是形參)
參數為引用,為了增加效率同時防止修改。
6、修飾引用參數時:
void function(const Class& Var);//引用參數在函數內不可以改變
void function(const TYPE& Var); //引用參數在函數內為常量不可變
7、const 修飾函數返回值
const修飾函數返回值其實用的並不是很多,它的含義和const修飾普通變數以及指針的含義基本相同。
(1) const int fun1() 這個其實無意義,因為參數返回本身就是賦值。
(2) const int * fun2()
8、調用時 const int *
『肆』 C語言中const是什麼意思。。。
const 推出的初始目的,正是為了取代預編譯指令,消除它的缺點,同時繼承它的優點。
const關鍵字使用非常的靈活,這一點和php差別很大,php中const用來在類中定義一個常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起來也是非常的靈活。
一、const用來修飾普通的變數(指針變數除外)的時候,const type name 和 type const name 這兩種形式是完全等價的,都表示其是常量,不能進行修改。
二、const用來修飾指針變數的時候,分為以下四種情況
1、const type *name :這種情況下,const修飾的指針變數name所指向的type類型對象,也就是說指向的這個對象是不能進行修改的,因為其是常量,而指針變數確實可以進行修改的。
2、type const *name :這種情況下,const修飾的指針變數name所指向的type類型對象,意思完全同上,只是顛倒了以下順序。
3、type * const name :這種情況下,const修飾的指針變數name,也就是說這個指針變數的值是不能進行修改的,但是指針變數所指向的對象確實可以修改的。
4、const type * const name :這種情況下,const修飾的指針變數name以及指針變數name所指向的對象,也就是說這個指針變數以及這個指針變數所指向的對象都是不能進行修改的。
(4)const編譯器擴展閱讀
使用const在一定程度上可以提高程序的安全性和可靠性。另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一定幫助。另外CONST在其它編程語言中也有出現,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
在c中,對於const定義的指針,不賦初值編譯不報錯,int* const px;這種定義是不允許的。(指針常量定義的時候對其進行初始化)int const *px;這種定義是允許的。(常指針可以再定義的時候不初始化)
但是,在C++中int* const px;和const int* const px;會報錯,const int* px;不報錯。必須初始化指針的指向int* const px = &x;const int* const px=&x;強烈建議在初始化時說明指針的指向,防止出現野指針!
『伍』 const為什麼不是標識符
Const 是一個系統關鍵字,用於聲明一個常量
比如Const PI=3.1415926
拓展資料:
C語言中的const變數
C語言中const變數是只讀變數,有自己的存儲空間
C++中的const常量
可能分配存儲空間,也可能不分配存儲空間
當const常量為全局,並且需要在其它文件中使用
當使用&操作符取const常量的地址
聯想 const和#define的區別
對比加深
C++中的const常量類似於宏定義
const int c = 5; ≈ #define c 5
C++中的const常量在與宏定義不同
const常量是由編譯器處理的,提供類型檢查和作用域檢查
宏定義由預處理器處理,單純的文本替換