1樓:匿名使用者
1、前兩個含義一樣,叫做指標常量,含義是 p所指向的內容不能被修改。
2、最後一個是常量指標,含義是 p 的值不能被修改,即它不能再指向其他地方。但是它所指向的內容是可以修改的。
3、類似的還有一個:char * const * p。相信lz知道他的含義吧。對,它表示p和它所指向的內容都不能被修改。
關於指標的問題,推薦lz看看《c和指標》這本書,相當經典的哦。
2樓:
第一個和第二個一樣,是指標變數,const指示指標所指向的記憶體單元為只讀。
第三個,是常量指標。也就是說,p為常量,而*p則不是常量。
3樓:匿名使用者
1,2同效,指的是(*p)不能被修改,即*p='c';報錯。3指的是p不能修改,若p="str";則p=null;報錯。其實const修飾的變數意思就是它後面的東西不能重複賦值const char *p;(*p)就定了
4樓:
其實從右往左看,就明白它的意思了
(1)point to const char指向字元常量的指標,就是指向的內容不能改變,指標可以變(2)和第一個一樣
(3)const point to char指向字元的常指標,指向的內容可以變,指標不能變
1,const 符號常量;
5樓:匿名使用者
前兩個 *p不可變,後一個 p不可變
前兩個可以改變指標的指向,但不能改變當前指向的值
後一個可以改變指標當前指向的值,但不可改變指標的值
符號常量的用const進行定義
6樓:煞
形式為 :const type name = value;
例如:const int months = 12;
這樣就可以在程式中使用months而不是12了。常量(如months)被初始化後,其值就被固定了,編譯器將不允許再修改該常量的值。假如您這樣做:
months = 18;
是不對的,就好像您將值4賦給值3一樣,無法通過編譯。
此外注意應在宣告中對const進行初始化。下面的**是不正確的:
const int toes;// toes的值此時是不確定的toes=10;//這時進行賦值就太晚了
如果在宣告常量是沒有提供值,則該常量的值是不確定的,而且無法修改它。
const str = "const定義的字串符號常量" print str 這裡的str代表什麼?為什麼要用這個?
7樓:匿名使用者
const定義常量,這裡的str就是字串「const定義的字串符號常量」。
這個常量是不允許被改變的,使用const在一定程度上可以提高程式的安全性和可靠性,另外,在**別人**的時候,清晰理解const所起的作用,對理解對方的程式也有一些幫助。
8樓:善良的豬頭
str是你定義的常量
print str 是將str的值列印輸出,一般是輸出到文字
c++用const已定義的符號常量如何初始化
9樓:
採用初始化列表的方式對類內定義const變數進行初始化,如下:
class a
const int jj;
static const int kk;//這個無法使用初始化列表};const int a::kk = 100;
10樓:風若遠去何人留
在c++中,const修飾的變數,稱之為常變數,代表其值不可被修改。
所以,在定義後,常量不支援賦值操作。所以,只能在定義的時候進行初始化。
如const char c = 'a';
這樣變數c的值,就被固定為'a'。
11樓:草粿殺烏糖
必須在定義時初始化,比如const int a=0是對的,但const int a;a=0;就不行了。一般編譯器是這樣的。
12樓:
const修飾的變數,只能在宣告時初始化的,以後是不能賦值的。這個也跟編譯器版本有關係。
符號常量const和deline有什麼不同
13樓:匿名使用者
1全部#define是源**字串替換,替換的可以不止是常量。作為符號常量時,一般只能替換為字面量。除了c語言中用雙引號括起來引用的字串字面量(常量性由語言實現定義,不作語法檢查)以外,c/c++其它的字面量都是常量。
const修飾的物件,可以是編譯期常量(包括上述字面量;執行期僅佔用資料段/**段而不佔用堆疊段儲存器空間),也可以是隻讀變數(執行期常量,在執行期和變數一樣,要佔用堆疊段空間)。相對而言,前者是「真正」的常量,後者只是不能修改(由編譯器保證)的變數被看成常量。
const int i = 1;
#define i (1)
這兩者在c++中效果相同(c中const int也不能用來定義陣列限定元素數或作標號,因為在這些上下文中const物件不會被當作編譯期常量)。
而extern const int i; /*在另外的編譯單元定義const int i = 1;*/
#define i (1)
這樣效果不同,前者是執行期常量(編譯器逐單元編譯,無法確定常量的值,只能作為執行期常量處理),後者是編譯期常量。
ls錯誤(把所有const都當成以上的執行期常量)。
此外,最終目標檔案(例如.exe)的生成過程中,可以進行一些優化,把一些執行期常量替換為編譯期常量,以提升效率。
====
[原創回答團]
14樓:猶悅沅
#define只是簡單的替換
const是要分配記憶體空間的
c語言中命名常量與符號常量的區別
你說的命名常量和符號常量應該是用const和define巨集的意思 const表示常量,它會在資料區開闢一個空間用來儲存這個常量,但是這個常量只讀,不可寫。用define巨集只表示 代換,在預編譯的時候遇到define的時候會把它轉換成相應的值,然後再彙編到指令中去,所以用巨集一般會把最後處理得到的...
c語音中的符號常量的定義方法是什麼
符號常量定義 在c語言中,可以用一個識別符號來表示一個常量,稱之為符號常量。其特點是編譯後寫在 區,不可定址,不可更改,屬於指令的一部分 在c語言中符號常量有3定義的方法 巨集定義法,這也是使用最廣泛的一種 使用方法 define 符號 常量值 例項 define pai 3.141592654 2...
C語言中定義符號常量是否必須用型別名來設定常量的型別求大神
不一定。定義符號常量 還可以使用巨集定義 如 define n 10 這裡就定義一個符號常量 n 10。注意 這裡的符號常量,也就是巨集名,一般用大寫。恩,這是肯定的,不管定義什麼都要用型別名來定義的。一定要用定義符號常量必須用型別名來設定常量的型別 c語言符號常量定義 在c語言中,可以用一個識別符...