常變數和符號常量的區別,C語言裡符號常量和常變數有什麼區別?

2021-03-30 15:20:22 字數 5608 閱讀 9044

1樓:愛笑的天宇

符號常量:

在c語言中,可以用乙個識別符號來表示乙個常量,稱之為符號常量。

符號常量在使用之前必須先定義,其一般形式為:

#define 識別符號 常量

其中#define 也是一條預處理命令(預處理命令都以"#"開頭),稱為巨集定義命令,其功能是把該識別符號定義為其後的常量值。一經定義,以後在程式中所有出現該識別符號的地方均代之以該常量值。習慣上符號常量的識別符號用大寫字母,變數識別符號用小寫字母,以示區別。

例:#include

#define price 30

main()

使用符號常量的好處是:

含義清楚;

能做到「一改全改」。

常變數就是用const定義的變數,常變數的值是不能被改寫的,只能使用不能改寫,除非是用友原函式進行呼叫。其實相當於用#define定義的變數,不過在c++中用const定義。在c中一般用#define.

2樓:江湖馨手

在程式執行過程中,其值不能被改變的量稱為常量。

在物件名前使用const宣告常物件,但宣告時必須同時進行初始化,而且不能被更新。

例如定義類base的乙個常物件a:

base const a(25,68);

用乙個標示符代表乙個常量的符號,稱為符號常量。

符合常量pi的定義如下:

const double pi=3.141592是用名字pi來代替數字3.141592

3樓:匿名使用者

常變數用const 來修飾其值在變數存在期間不能改變;符號常量就是用乙個符號代替乙個常量例如#define pi 3.1416,注意後面沒有分號!!

c語言裡符號常量和常變數有什麼區別?

4樓:楊塵一

符號常量與常變數的區別:符號常量不佔用記憶體空間,在預編譯時就全部由符版號常量的值替換了,而常變數佔用權記憶體空間,也有資料型別,但是此變數在存在期間是不能重新賦值的。

1、常變數a的定義如下:

const int a = 5;

2、符合常量pi的定義如下:

#define b=3.1;

5樓:四角瑪

符號常量 是編譯前有預處理器處理的

#define pi 3.1415926

#define 是一條預處理命令, 就是出現符號常量pi的地版方用後面的數字替換只

權是簡單地替換

然後進入編譯器

而常變數由編譯器處理,分配記憶體空間,有資料型別,可以和變數一樣使用,但不可以改變值!

const float pi=3.14159;

常量和常變數有什麼區別沒

6樓:夢heart兒

1、佔用空間不同

常量bai不佔用記憶體空間,du

在預編譯時就全部由zhi符號dao常量的值替換了內,而常變數佔用記憶體空間,容只是此變數在存在期間不能重新賦值。

2、能否在計算中改變

常量在計算機程式執行時,不會被程式修改的量。常變數在運算時時是指賦予的一系列值,所以常變數值不是唯一的。

擴充套件資料

在除了『c/c++』的一些高階程式語言中,「常量」可以被稱作,「在乙個資訊變化過程中,始終不發生改變的量」,其可以是不隨著時間變化的某些量的固定資訊;也可以表示為某一數值的字元(或字串),常被用來標識、測量和比較兩者的差異。

但在 『c/c++語言中』,『常量』如果還用『執行過程中不變的量』來描述,就顯得不準確,甚至是在具體使用時,這就是乙個錯誤的概念。

在 『c/c++』中,定義『指標常量』時,根據『const 』的位置的不同,可以定義出幾個不同的形式,雖然其看起來『符合常量的概念』,但是在實際執行中,其值或位址值是會發生變化的。所以本質還不是『常量概念』。

7樓:匿名使用者

區別1define是巨集定義bai,程式在預處理階du段將用define定義的zhi

內容進行了替換dao。因此程式版執行時,常權

量表中並沒有用define定義的常量,系統不為它分配記憶體。

const定義的常量,在程式執行時在常量表中,系統為它分配記憶體。

區別2define定義的常量,預處理時只是直接進行了替換。所以編譯時不能進行資料型別檢驗。

const定義的常量,在編譯時進行嚴格的型別檢驗,可以避免出錯。

區別3define定義表示式時要注意「邊緣效應」,例如如下定義:

#define n 2+3 //我們預想的n值是5,我們這樣使用n

int a = n/2; //我們預想的a的值是2.5,可實際上a的值是3.5

原因在於在預處理階段,編譯器將 a = n/2處理成了 a = 2+3/2;這就是巨集定義的字串替換的「邊緣效應」因此要如下定義

#define n (2+3)

const定義表示式沒有上述問題

const定義的常量叫做常變數原因有二:

1,const定義常量像變數一樣檢查型別。

2,const可以在任何地方定義常量,編譯器對它的處理過程與變數相似,只是分配記憶體的地方不同(常量在靜態區,變數在棧區)

8樓:請留言

說白了就是const是乙個變數,而且會先計算其表示式。

define只是字串替代。只是在運算的時候把它所代表的句子加在它所在的地方,然後再計算。所以要特別注意計算的順序,注意加括號

c語言中,常變數與符號常量有什麼區別?

9樓:東門士恩儲子

符號常量與常變數的區別:符號常量不佔用記憶體空間,在預編譯時就全部由符號常量的值替換了,而常變數佔用記憶體空間,也有資料型別,但是此變數在存在期間是不能重新賦值的。

1、常變數a的定義如下:

const

inta=5;

2、符合常量pi的定義如下:

#define

b=3.1;

c++ 語音中的 符號常量和常值變數有什麼區別?

10樓:匿名使用者

修正下樓上的小錯誤,應該是#define pi 3.14 沒有=號;然後#define定義的常量只是做簡單的替換,用後面的常量代替前面的符號。例如#define x 3+3 ,然後你再來個i=x*x 事實上執行的結果是

i=3+3*3+3=15。與實際要得到的值不符,這點要注意一下!

11樓:匿名使用者

符號常量用#define來定義,例如#define pi=3.14;

常值變數用const來定義,例如const double pi=3.14。

與符號常量相比,常值變數有更明確的型別屬性,更經常被程式設計師使用。

常量和變數的區別

12樓:幾公尺要環遊世界

常量bai和變數的區別:變

du量是「可讀、可寫」,而常zhi量是dao「唯讀」的。

變數是在程式內執行過容

程中,內部儲存的值,隨時可以被改變的一段記憶體位址。比如:int a = 123,這裡的a就是乙個整型變數,通常情況下,整型變數佔據著4個位元組的記憶體。

常量在程式執行過程中,所表示的值是無法被改變的。比如:const int a = 123, 這裡的a,在其前面有乙個修飾符「const」,表示a的值是「唯讀」的。

13樓:紅山人

常量就是不變的量,可以是數值,字元,各種符號.

14樓:匿名使用者

資料型別就像:整數,單精度小數,雙精度小數……

變數:就像數學中的變數x,y……注意:他們的值是可以改變的

常量:也像數學中的常量 a,b……,值一旦給定後就不變

請問c語言中,常變數和符號常量的不同之處在哪?

15樓:寂寞的哥布林

eg{const a=3;

a=4; //出錯,常變數不允許被修改}

字元常量與字串常量的區別是什麼

16樓:匿名使用者

1、形式不同:

字元常量是單引號引起的乙個字元;字串常量是雙引號引起的若干個字元。

2、含義不同:

字元常量相當於乙個整型值,可以參加表示式的運算;字串常量代表乙個位址值(該字串在記憶體中存放的位置)。字元常量可以賦值給字元變數,如"char b='a';",但不能把乙個字串常量賦給乙個字元變數,同時也不能對字串常量賦值。

3、佔記憶體不同:

字元常量只佔乙個位元組;字串常量佔若干個位元組,(至少乙個字元結束標誌)。不佔據任何儲存空間屬於指令的一部分,編譯後不再更改。字串常量是一對雙引號括起來的字串行。

17樓:僕菱華橋清

乙個是字元,乙個是字串,字元在進行運算時是當整數處理的,字串不能參與運算,字串隱含了『\0'這個字元,因此它有兩個字元,字串本身是個位址等等

18樓:

字元常量 長度只有 1位元組 (1 byte),是整型量,例如 'a','\n'. 數值等於它的ascii值.

可以用於整型表示式。

字串常量 長度可以不只1位元組,是char 陣列,預設以 "\0" 結束。例如 "abc123".

通常要用str...函式來處理,例如 strcmp(),strcpy(),strlen().

19樓:來自居庸關粉妝玉琢的珍珠梅

二者都是常量,區別在於使用方法不同

字元常量使用時直接拿變數使用

而字串常量由於含不止乙個字元,不易使用其全部字元內容,所以使用時通常是使用它的首位址,即指標

20樓:

字元常量只是乙個字元,佔8位,字串常量佔若干個8位

21樓:匿名使用者

字元型常量是指僅含單個ascii字元的常量有兩種表示方法

1. 單撇號

如 'a' '$'

2 轉義字元

如 '\n' '\0'

儲存上佔 1位元組 存放於字元型變數中

可以與整數混合運算

字串常量是0個或多個字元的序列

用 雙撇號表示

如 「981650981725」

儲存上 等於字元數量+1 因為系統預設追加零字元 存放於字元型陣列中

22樓:匿名使用者

字元常量是單引號,字串常量是雙引號

23樓:匿名使用者

什麼一串乙個的我就不說了,說點隱蔽的

1.char a = 'k' a佔乙個位元組char a = "k" a佔兩個位元組

c在定義字元常量和字串變數的時候有不同,會在字串變數的末尾加上『\0』

2.char a = '1';這裡的a是乙個變數,傳值,修改的規則都和int一致

char* a = 」123「;這裡的a是乙個指標,函式傳值func(a)傳的是指標,不是」123「這個字串

還有不明白的385749807

24樓:匿名使用者

字串是一連串的字元

字元是單個的

c語言中巨集跟常變數的定義有什麼區別

c當中是沒有常變數的,也就是定義的變數賦值了常數但是仍然可以改變值 c 裡邊才有常變數,定義同時初始化,以後就不能改變值了。c中的巨集定義就是一種替換,上的複製替換,可以這樣理解,define a 12345就是凡是a出現的地方都用12345替換,當然巨集替換就不止數值,還可以到字串 函式表示式上去...

關於堆疊和變數儲存,c語言裡什麼變數儲存在堆中什麼變數儲存在棧中啊!

1.c語言中的堆疊是一種資料結構,它表示按照規定強制要求按fifo或filo的方式進行資料讀寫,是軟體層面的意義,你需要定義pop push的具體操作。而微控制器中的堆疊是硬體層面的意義,其實現是通過硬體電路實現的,push pop操作時固定的,你無法改變 2.微控制器分為兩種,哈佛體系和普林斯頓體...

php和c語言的區別,php和C語言的區別

1 php是伺服器指令碼語言,必須要執行在能夠解析php的伺服器上2 c語言是低階語言,php是高階語言 3 c語言是強型別語言,php是弱型別語言,這一點從2者語法的差別可以看出 4 php主要用來做web應用,c語言主要用來做計算機底層的應用,另外c語言功能比php強大很多,你應該知道php就是...