C語言和C 中符號常量的儲存方式和位置

時間 2021-08-30 10:38:27

1樓:匿名使用者

當然要佔用空間了,就是在常量儲存區,你可以讓編譯器產生map檔案看看裡面的各個資料的儲存分配,書上說的不佔記憶體空間大概是指在有些系統裡,常量儲存區因為不需要修改,所以是跟**一起放在非易失性儲存器裡的

2樓:匿名使用者

#define pi 3.14

做的事情是將源**裡pi的地方全部用3.14替掉所以你們老師說符號常量不佔空間

你說的也是對的,3.14是佔空間的

但這個稱為浮點常量,編譯器用到的時候會臨時給它一塊記憶體空間,用完即銷燬

順便似乎符號常量是中國教材生造的

there are five kinds of tokens: identifiers, keywords, literals, operators, and other separators (iso 14882)

這裡的 literal 似乎不包含符號的意思。

3樓:樂跑小子

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

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

const int a = 5;

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

#define b=3.1;

c++中整型常量中的有符號和無符號怎麼理解,怎麼判斷?

4樓:覺悟壯志

按字面意思理解就可以。

有符號整型既可以表示正整數,又可

以表示負整數。內(當然也可以容表示0)

無符號整型預設只表示正整數

一、區別

區別1. 最明顯的區別還是在關鍵字上,有符號整型用int/short/long ,無符號整型unsigned(int)/ unsigned short/unsigned long

區別二2.取值範圍不同,因為有符號整型要表示負數,所以表示範圍分佈在0左右

以int 為例,int表示範圍是 -2^31到2^31-1. 無符號整型不需要表示符號,所以分佈在0的右邊,以unsigned(int)為例,unsigned (int) 範圍是 0到2^32-1

二、應用

總的來說用起來差不多,但是由於表示範圍不同,各取所長。

比如年齡欄位一般而言是正數,所以用unsigned short即可(當然,int也不會報錯)

又如訂單系統需要表示庫存數量的增減變化,可以用int

5樓:匿名使用者

無符號版本

和有來符號版本源的區別就是無符號型別bai能儲存2倍於有符du號型別的正整數zhi資料dao,比如16位系統中一個int能儲存的資料的範圍為-32768~32767,而unsigned能儲存的資料範圍則是0~65535

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

6樓:匿名使用者

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

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

7樓:匿名使用者

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

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

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

請問c++中的引用符號「&」到底怎麼使用?

8樓:苑

c++中的引用符號「&」的使用方法是,型別識別符號 &引用名=目標變數名。

c++是c語言的繼承,它可進行過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。引用(reference)就是c++對c語言的重要擴充。引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。

9樓:西西哩的小馬甲

引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

【例1】:int a; int &ra=a; //定義引用ra,它是變數a的引用,即別名 ;

說明:(1)&在此不是求地址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。 ra=1; 等價於 a=1;

(5)宣告一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。

故:對引用求地址,就是對目標變數求地址。&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是一個由若干個元素所組成的集合,所以無法建立一個陣列的別名。

10樓:匿名使用者

引用是c++引入的新語言特性,是c++常用的一個重要內容之一,正確、靈活地使用引用,可以使程式簡潔、高效。

引用簡介

引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

【例1】:int a; int &ra=a; //定義引用ra,它是變數a的引用,即別名

說明:(1)&在此不是求地址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。

ra=1; 等價於 a=1;

(5)宣告一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求地址,就是對目標變數求地址。

&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是一個由若干個元素所組成的集合,所以無法建立一個陣列的別名。

引用應用

1、引用作為引數

引用的一個重要作用就是作為函式的引數。以前的c語言中函式引數傳遞是值傳遞,如果有大塊資料作為引數傳遞的時候,採用的方案往往是指標,因為這樣可以避免將整塊資料全部壓棧,可以提高程式的效率。但是現在(c++中)又增加了一種同樣有效率的選擇(在某些特殊情況下又是必須的選擇),就是引用。

【例2】:

此處函式的形參p1, p2都是引用

為在程式中呼叫該函式,則相應的主調函式的呼叫點處,直接以變數作為實參進行呼叫即可,而不需要實參變數有任何的特殊要求。如:對應上面定義的swap函式,相應的主調函式可寫為:

main( )

float &fn2(float r) //定義函式fn2,它以引用方式返回函式值

void main() //主函式

} (5)在另外的一些操作符中,卻千萬不能返回引用:+-*/ 四則運算子。它們不能返回引用,effective c++[1]的item23詳細的討論了這個問題。

主要原因是這四個操作符沒有side effect,因此,它們必須構造一個物件作為返回值,可選的方案包括:返回一個物件、返回一個區域性變數的引用,返回一個new分配的物件的引用、返回一個靜態物件引用。根據前面提到的引用作為返回值的三個規則,第2、3兩個方案都被否決了。

靜態物件的引用又因為((a+b) == (c+d))會永遠為true而導致錯誤。所以可選的只剩下返回一個物件了。

4、引用和多型

引用是除指標外另一個可以產生多型效果的手段。這意味著,一個基類的引用可以指向它的派生類例項。

【例7】:

class a;

class b:public a;

b b;

a &ref = b; // 用派生類物件初始化基類物件的引用

ref 只能用來訪問派生類物件中從基類繼承下來的成員,是基類引用指向派生類。如果a類中定義有虛擬函式,並且在b類中重寫了這個虛擬函式,就可以通過ref產生多型效果。

引用總結

(1)在引用的使用中,單純給某個變數取個別名是毫無意義的,引用的目的主要用於在函式引數傳遞中,解決大塊資料或物件的傳遞效率和空間不如意的問題。

(2)用引用傳遞函式的引數,能保證引數傳遞中不產生副本,提高傳遞的效率,且通過const的使用,保證了引用傳遞的安全性。

(3)引用與指標的區別是,指標通過某個指標變數指向一個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。

(4)使用引用的時機。流操作符《和》、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。

11樓:匿名使用者

int x=5;

int &p=x; // p指向了x用於函式的傳址引數, int test(int &m, int n)

m是傳址,n是傳值

12樓:匿名使用者

取地址符,比如有個變數a。&a就是說a在記憶體的地址

C語言。在C語言程式中,符號常量的定義要使用預處理命令

summer瀟瀟煙雨 stdio.h,就是這個答案 可以問我其他的,願意解答c語言 北桅 define 比如定義 define a 3.14 a就代表3.14 c語言中?和 是什麼意思?怎麼運用在程式設計中? 超級餅餅乾 的意思bai 是條件運算子,使用的du格式zhi如下 條件 a b,如果dao...

C語言和C 的區別,難易程度,請問C語言和C 區別大嗎?

張擁達 c語言和c 語言目前依然有廣泛的應用前景,從語言自身的角度來說,c語言屬於程序導向的程式語言,而c 則是物件導向的程式語言。對於零基礎的初學者來說應該從c語言開始學起,原因有以下幾點 第一 c語言語法結構相對簡單。c語言屬於程序導向的程式語言,語言自身的語法結構比較清晰,而c 屬於物件導向的...

C語言和C 有什麼區別?C語言和C 的區別

我覺得還是先學c,然後再學c 像上面幾位說的那樣,c是基礎,而且在嵌入式等很多底層程式設計的場合採用c比較多,而c 是一種基於c的語言,在c的基礎上加入的物件導向的思想,學習c 重要的是把物件導向搞清楚,這屬於進階層次。沒有程式設計基礎直接學習c 很難較好的理解物件導向。c是基礎,能力好直接c 也行...