const符號常量,1,const 符號常量

2023-01-05 10:20:49 字數 2936 閱讀 6516

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語言中,可以用一個識別符...