C 中常量賦值是如何規定的,C語言中是如何定義常量的啊

2021-08-08 04:51:57 字數 3654 閱讀 8999

1樓:匿名使用者

像 42 這樣的值,在程式中被當作字面值常量。稱之為字面值是因為只能用它的值稱呼它,稱之為常量是因為它的值不能修改。每個字面值都有相應的型別,例如:

0 是 int 型,3.14159 是 double 型。只有內建型別存在字面值,沒有類型別的字面值。

因此,也沒有任何標準庫型別的字面值。 c++ primer中2.2

2樓:匿名使用者

1、const常量是不允許被賦值的。

2、由編譯器確定值叫初始化,由c/c++**確定值就叫賦值,不叫初始化而叫賦初值了。const變數只有初始化的份兒(而且必須初始化),根本不能被賦值(哪怕是初值);如果能被賦值,還叫什麼const(只讀)變數?再大的陣列,初始化為0時很好辦,只要把首元素初始化為0,其餘的都被編譯器自動置0了。

3樓:匿名使用者

1、值替代   c語言中前處理器用值代替名字:

#define bufsize 100 這種方式在c++中依然適用,同時  c++用const把值代替帶進編譯器領域:  const bufsize = 100 ;或 const int bufsize = 100 ;  同時還可以執行常量摺疊:  char buf[bufsize] ;1.

1 標頭檔案裡的const  與使用#define一樣,使用const必須把const定義放在標頭檔案裡。這樣,通過包含標頭檔案,可把const定義單獨放在一個地方,並把她分配給一個編譯單元。const預設為內部連線,即僅在const被定義過的檔案裡才是可見的,而在連線時不能被其他編譯單元看到。

  比如說在test.h中定義了,

const int ntestconst = 1000;  在a.cpp中include"test.h"  同時在b.

cpp中include"test.h"  不會出現,當沒有定義為const時,因變數定義出現兩次而出錯的情形.  當定義一個const常量時,必須賦一個值給它,除非用extern作了清楚的說明:

extern const bufsize ;  雖然上面的extern強制進行了儲存空間分配,但c++編譯器並不為const分配儲存空間,相反它把這個定義儲存在它的符號表裡。當const被使用時,它在編譯時會進行常量摺疊。 1.

2 const的安全性  如果想要一個值保持不變,就應該使它成為一個常量(const)。  1.3 集合  const可以用於集合,但必須分配記憶體,意味著「不能改變的一塊儲存」。

但其值在編譯時不能被使用。

const int i = ;

// float f [ i [3] ]; // illegal  2,指標  當使用帶有指標的const時,有兩種選擇:1、或者const修飾指標正指向的物件,2、const修飾儲存在指標本身的地址。  2.

1 指向const的指標  使用指標定義的技巧,正如任何複雜的定義一樣,是在識別符號的開始處讀它並從裡到外讀。如果我們要使正指向的元素不發生改變,得寫:

const int * x;  從識別符號開始:「x 是一個指標,指向一個const int。」  把const從一邊移到另一邊,結果一樣。

  int const * x;  2.2 cosnt指標  是指標本身成為一個const指標,必須把const標明的部分放在*的右邊,如:

int d = 1;

int * const x = &d;  指標本身是const指標,編譯器要求給它一個初始化值,這個值在指標壽命期間不變。然而要改變它所指向的值是可以的,可以寫*x = 2。  這些可以總結成這樣一句話:

  以*為分界點,  當const在*的左邊時,實際物體值不變  當const在*的右邊時,指標不變,  即,左物右指  這樣來記比較方便!! ---摘自 http://webservices.

ctocio.com.cn/net/157/9255157.

shtml

c語言中是如何定義常量的啊

4樓:劉世媛

我們在用c程式設計時有時需要定義不變的變數,即常量,有兩種方法。

例如:定義常量pi的兩種方式:

1. #define pi 3.1415926f;

2. const float pi 3.1415926f;

常量有整型常量、浮點型常量、字元型常量及字串常量。 『常量定義是指定義符號常量,用一個識別符號來代表一個常量,通過巨集定義預處理指令來實現。

格式:#define識別符號常量

由使用者命名的識別符號是符號常量名。作為符號常量名,一般大寫。一旦定義,在程式中凡是出現常量的地方均可用符號常量名來代替。

對使用了符號常量的程式在編譯前會以實際常量替代符號常量。

全域性變數和區域性變數的區別:

5樓:匿名使用者

#define count 60

這叫巨集定義,不叫常量

常量的定義:

const int count = 60;

形參指定型別,實參指定數值

6樓:天雲一號

c語言定義常量常用的方法有以下2種:

第一種:巨集定義

#define n 3  // 定義了一個常量為3的巨集n,在程式中n就代表3

第二種:給變數初始化賦值

int a = 2;  // 定義了一個int型變數,並賦值為2,其實這是用變數來定義常量

注:定義常量還是用巨集定義的比較多。

7樓:匿名使用者

常量的定義:

#define count 60

這就定義了一個常量 count 它的值是一個常量60 在整個程式中不變

關於實際引數和,形式引數:

可以這樣通俗的去理解:

主調函式中的引數是實際引數,被調函式中的引數是形式引數,比如說:如下**段

被調函式:

int max(int a,int b)

主調函式:

main()

在北調函式max(int a,int b)中a,b是形式引數在主函式中max(a,b)中的a,b是實際引數;

8樓:匿名使用者

可以用預處理命令#indefine

和const靜態定義個數便是常量

形參就是函式定義時,所給的引數;而實參就是在main函式中呼叫時所使用的引數,兩者可以相同也可以不相同。

9樓:匿名使用者

實參在主調函式中,形參在被調函式中

當使用的是值傳遞方式時,實參值傳遞給形參,但是形參不把值傳回實參,即單向傳遞。

當使用地址傳遞時,實參地址傳遞給形參,形參把地址傳回實參,是雙向傳遞。

10樓:

#define

定義在全域性區

11樓:☆行雲流水

#define count 100

實參在主調函式中,形參在被調函式中

c語言中是如何定義常量的啊?

12樓:迠寋漧

c語言定義常量常用的方法有以下2種:

第一種:巨集定義

#define n 3 // 定義了一個常量為3的巨集n,在程式中n就代表3

第二種:給變數初始化賦值

int a = 2; // 定義了一個int型變數,並賦值為2,其實這是用變數來定義常量

注:定義常量還是用巨集定義的比較多。

C語言賦值和初始化的區別,c語言賦值中什麼叫初始化賦值,和賦值有什麼區別嗎

在定義了一個變數後就會給變數分配一個地址,但不會自動賦值,只有執行的時候,若變數依然沒有賦值,結果要使用此變數的時候會隨機賦值。定義一個某型別的變數,系統就會給它分配一個地址,大小就是這個型別的大小。如果你沒初始化,系統中這個變數指向的地址裡邊可能以前已經存了一個數,這個數是多少?未知的。所以說變數...

在C語言中,不能將常量賦值給表示式這句話該怎麼理解

比如 賦值一般是 int a 5 那麼就是賦值但是你要是 x y 5 這樣顯然是不對的這個是數學中的等式 不是c語言中的賦值 有問題請追問 滿意記得采納 所謂賦值,例如int x y x 6 x是有地址,在記憶體中是有空間的,你可以用 x來取x的地址,但是表示式,例如x y,這個整個表示式,是沒有地...

C語言判斷正誤。。賦值的問題,C語言 判斷直接賦值問題

char s 定義一個字元類指標 s olympic s指向的是字串 olympic 裡的第一個字元 o s可理解為字串 第二句若改成指向字元類指標的指標就可以正確賦值了,如下 char s s 這樣的s可理解為指向字串的指標,也可以理解為二維陣列 可以這麼理解第二句 char s 定義一個字元型指...