1樓:a羅網天下
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所指向的物件,也就是說這個指標變數以及這個指標變數所指向的物件都是不能進行修改的。
使用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;不報錯。必須初始化指標的指向強烈建議在初始化時說明指標的指向,防止出現野指標!
2樓:**ile逝季
const關鍵字的作用主要有以下幾點:
1、可以定義const常量,具有不可變性。
例如: const int max=100; int array[max];
2、便於進行型別檢查,使編譯器對處理內容有更多瞭解,消除了一些隱患。例如: void f(const int i) 編譯器就會知道i是一個常量,不允許修改;
3、可以避免意義模糊的數字出現,同樣可以很方便地進行引數的調整和修改。
4、可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。 還是上面的例子,如果在函式體內修改了i,編譯器就會報錯;
例如:void f(const int i)
5、 為函式過載提供了一個參考。
class a //一個函式
void f(int i) const //上一個函式的過載 ......
}; 6、 可以節省空間,避免不必要的記憶體分配。
const定義常量從彙編的角度來看,只是給出了對應的記憶體地址,而不是象#define一樣給出的是立即數。
所以,const定義的常量在程式執行過程中只有一份拷貝,而#define定義的常量在記憶體中有若干個拷貝。
7、提高效率。 編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為一個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。
3樓:匿名使用者
const int a;
int const a;
這兩個是一樣的 都是a這個值不可改變。
const int *a;
int * const a;
這兩個就有不同了。
首先第一個是一個指標a,所指向的地址空間內容不可改變,但是a本身可以改變指向。
第二個,a本身的指向不可改變,但是他指向的空間內容可以改變。
有什麼不明白的加我msn [email protected]
4樓:匿名使用者
1)、const在前面
const int nvalue; //nvalue是const
const char *pcontent; //*pcontent是const, pcontent可變
const (char *) pcontent;//pcontent是const,*pcontent可變
char* const pcontent; //pcontent是const,*pcontent可變
const char* const pcontent; //pcontent和*pcontent都是const
2)、const在後面,與上面的宣告對等
int const nvalue; // nvalue是const
char const * pcontent;// *pcontent是const, pcontent可變
(char *) const pcontent;//pcontent是const,*pcontent可變
char* const pcontent;// pcontent是const,*pcontent可變
char const* const pcontent;// pcontent和*pcontent都是const
c語言中%c是什麼意思
5樓:匿名使用者
用於格式化輸入輸出函式中, 針對char型別的匹配。
比如 輸入
用於輸入一個字元型。
輸出時類似。
所有的格式化輸入輸出函式,都可以用這個。
c語言裡const int 和int 有什麼區別,const的作用是什麼。
6樓:大野瘦子
1、內容不
e68a84e8a2ad62616964757a686964616f31333431333963同
constint* p; //p可變,p指向的內容不可變,int const* p; //p可變,p指向的內容不可變。 int* const p; //p不可變,p指向的內容可變 const int* const p; //p和p指向的內容都不可變。
2、取指標
const int型別一旦定義以後就不能修改,int型別是隨時可以修改的。
3、返回值
const int是返回這個數值的一個常量的引用。
而int是返回這個數值的一個拷貝。
const作用:
1、可以定義const常量,具有不可變性。
例如:const int max=100; max++會產生錯誤。
2、便於進行型別檢查,使編譯器對處理內容有更多瞭解,消除了一些隱患。
例如: void f(const int i) 編譯器就會知道i是一個常量,不允許修改。
3、可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。
7樓:杜xiao若
一、區別如下:bai
1、int定義du的量是變數,它的值可以更改;zhi而const int 定義的是一個常量dao,它的回值不可以更改。答
2、int在定義的時候,不需要初始化,而const int 在定義的時候必須初始化;
二、const的作用:把物件轉換成一個常量拓展資料const與define。兩者都可以用來定義常量,但是const定義時,定義了常量的型別,所以更精確一些。
#define只是簡單的文字替換,除了可以定義常量外,還可以用來定義一些簡單的函式,有點類似行內函數(inline)。const和define定義的常量可以放在標頭檔案裡面。
8樓:匿名使用者
怎麼會有人說沒有區別的。。沒區別還要這個東西幹蛋。。
在取指標版方面,const有略複雜的東西權,但是常規的、合理的操作不應該涉及到,因為const int是用來儲存一些全域性常量的,這些常量在編譯期可以改,在執行期不能改,聽起來這像巨集,其實這確實就是用來取代巨集的:
#define pi 3.14
const float pi = 3.14;
如果你的**裡用到了100次pi(巨集),你的**中會儲存100個3.14這個常數,鑑於使用常數進行運算的機器**很多時候會比使用變數來的長,如果你換用100次pi(const float),程式編譯後的機器碼裡就不需要出現100次常量3.14,只要在需要的時候引用存有3.
14的常量就行了,特別在複雜的運算裡,3.14這個常量(其實是無法修改的變數)會被一直裝載在暫存器裡帶來一些效能提升。
清楚了const的用法,const int和int的區別就很簡單,int i裡的i可以被更改,是真正的變數,const int i的i不可以被更改,是有著變數外衣的常數。
9樓:匿名使用者
首先bai要明白const起的是強調只讀屬性du的作用 把一zhi個數或者指標當作常量dao看待專
const int a = 10; a= 15;//不能直接修改常量 int a = 10; a = 15; //可以直接修改
雖然屬加了const不能直接修改 但是可以通過指標間接修改通過加volatile關鍵字強調從變數地址讀取變數的值 保證資料不會從暫存器中讀取導致修改失敗
列印a的結果為2
10樓:匿名使用者
const int表示這個值是個常整型,必須在宣告的同時初始化,並且初始化之後值就不能再被改變
11樓:匿名使用者
兩個沒有區別,但當const修飾的是指標時就有區別.
const int* a
int* const a ;
如果const位於星號的左側,則const就是用來修飾版指標所指向的變數,權即指標指向為常量;如果const位於星號的右側,const就是修飾指標本身,即指標本身是常量
12樓:匿名使用者
const int型別一旦定義以後就不能修改,int型別是隨時可以修改的。
c語言中是什麼意思c語言中x是什麼意思
在c語言中,x代表的意思是按位取反的意思。將x按位取反 比如x 10101010b。那麼 x 01010101b。還要注意,在c語言中,還有邏輯取反符號 x 的返回值只有0和1兩種。如果x為0,則!x 1。如果x不等於0.則!x的返回值為0。擴充套件資料 c語言關鍵字。signed 宣告有符號型別變...
c語言中的,c語言中 是什麼意思
c語言中的 是邏輯運算中的非運算。是c語言中的非運算子,在變數前面使用它,會構建非運算表示式,表示式的返回結果是個布林值 也就是隻有true或false 對變數使用時,如果變數不是布林資料型別,將會強制轉化為布林型別再使用,如整形變數123將被轉化為true,整形變數0將被轉化為false。擴充套件...
c語言中alpha是什麼意思c語言中charalpha5的含義
1 c語言程式設計中baialpha通道是一個du8位的灰度通道,該通zhi 道用256級灰度來記錄dao影象中的透明 內度資訊,定義透明 不透明和半透容明區域,其中黑表示透明,白表示不透明,灰表示半透明。2 阿爾法通道 alpha channel 是指一張 的透明和半透明度。例如 一個使用16位儲...