c語言中double和float它們儲存時分別佔據多大的記憶體空間

2021-05-22 11:55:11 字數 5872 閱讀 7630

1樓:匿名使用者

c標準規定:

float 不少於 4個位元組,

double 不少於 8個位元組。

具體的你在所在平臺上用這個試試就知道了(sizeof(int)):

sizeof(double);

sizeof(float);

2樓:匿名使用者

double 中文譯為雙精度浮點數,一般稱雙精度數,它在記憶體中佔用8個位元組(位、bit)的空間;float 中文譯為單精度浮點數,一般就稱為浮點數,它在記憶體中佔用4個位元組的空間。

3樓:

c標準規

bai定:

float 不少於 4個字du節,

double 不少於 8個位元組。zhi

具體的dao

你在所在平臺上用這個試試就版知道了(

權sizeof(int)):

sizeof(double);sizeof(float);

4樓:匿名使用者

double定義的是雙精度的變數,該變數的佔八個位元組,有效數字是15位。而float是單內精度的浮點型變數,該

容變數佔的是四個位元組,有效數字是7位。所以如果小數位比較多,就應該設定為double形的。小數的話預設為double型的變數,如果定義一個float的話最後末尾要帶一個f,比如float a=12.

1f;表示這是一個單精度的數,而double不需要。

5樓:匿名使用者

首先更正樓上:位元組不等於位,1位元組(byte)=8位(bit)

float單精度型浮點數,佔據記憶體為4個位元組(4b)。

double雙精度型浮點數,佔據記憶體為8個位元組(8b)。

在c語言中一個指標佔用多少位元組。

6樓:blackpink_羅捷

一個指標變數在記憶體中佔兩個位元組(small模式編譯),一個指標變數在記憶體中佔四個位元組(32位機器上),一般都是32位機器的,所以四個位元組咯。

指標即為地址,指標幾個位元組跟語言無關,而是跟系統的定址能力有關。

指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址。要搞清一個指標需要搞清指標的四方面的內容:指標的型別、指標所指向的型別、指標的值或者叫指標所指向的記憶體區、指標本身所佔據的記憶體區。

擴充套件資料

1、指標的型別

從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各個指標的型別:

(1)int*ptr;//指標的型別是int*

(2)char*ptr;//指標的型別是char*

(3)int**ptr;//指標的型別是int**

(4)int(*ptr);//指標的型別是int(*)

(5)int*(*ptr);//指標的型別是int*(*)

2、指標所指向的型別

當你通過指標來訪問指標所指向的記憶體區時,指標所指向的型別決定了編譯器將把那片記憶體區裡的內容當做什麼來看待。

從語法上看,你只須把指標宣告語句中的指標名字和名字左邊的指標宣告符*去掉,剩下的就是指標所指向的型別。例如:

(1)int*ptr; //指標所指向的型別是int

(2)char*ptr; //指標所指向的的型別是char

(3)int**ptr; //指標所指向的的型別是int*

(4)int(*ptr); //指標所指向的的型別是int()

(5)int*(*ptr); //指標所指向的的型別是int*()

7樓:哇哎西西

指標即為地址,指標幾個位元組跟語言無關,而是跟系統的定址能力有關。

比如以前是16位系統,指標即為2個位元組,現在一般是32位系統,所以是4個位元組。

指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址。要搞清一個指標需要搞清指標的四方面的內容:指標的型別、指標所指向的型別、指標的值或者叫指標所指向的記憶體區、指標本身所佔據的記憶體區。

擴充套件資料:

1、指標的型別

從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各個指標的型別:

(1)int*ptr;//指標的型別是int*

(2)char*ptr;//指標的型別是char*

(3)int**ptr;//指標的型別是int**

(4)int(*ptr)[3];//指標的型別是int(*)[3]

(5)int*(*ptr)[4];//指標的型別是int*(*)[4]

2、指標所指向的型別

當你通過指標來訪問指標所指向的記憶體區時,指標所指向的型別決定了編譯器將把那片記憶體區裡的內容當做什麼來看待。

從語法上看,你只須把指標宣告語句中的指標名字和名字左邊的指標宣告符*去掉,剩下的就是指標所指向的型別。例如:

(1)int*ptr; //指標所指向的型別是int

(2)char*ptr; //指標所指向的的型別是char

(3)int**ptr; //指標所指向的的型別是int*

(4)int(*ptr)[3]; //指標所指向的的型別是int()[3]

(5)int*(*ptr)[4]; //指標所指向的的型別是int*()[4]

3、指標的值或者叫指標所指向的記憶體區或地址

指標的值是指標本身儲存的數值,這個值將被編譯器當作一個地址,而不是一個一般的數值。在32 位程式裡,所有型別的指標的值都是一個32 位整數,因為32 位程式裡記憶體地址全都是32 位長。

指標所指向的記憶體區就是從指標的值所代表的那個記憶體地址開始,長度為sizeof(指標所指向的型別)的一片記憶體區。以後,我們說一個指標的值是xx,就相當於說該指標指向了以xx 為首地址的一片記憶體區域。

我們說一個指標指向了某塊記憶體區域,就相當於說該指標的值是這塊記憶體區域的首地址。指標所指向的記憶體區和指標所指向的型別是兩個完全不同的概念。在例一中,指標所指向的型別已經有了,但由於指標還未初始化,所以它所指向的記憶體區是不存在的,或者說是無意義的。

4、指標本身所佔據的記憶體區

在32 位平臺裡,指標本身佔據了4 個位元組的長度。

8樓:舟

指標即為地址,它是一個

無符號整數(unsigned int),

它是一個以當前系統定址範圍為取值範圍的整數。

指標幾個位元組跟語言無關,而是跟系統的定址能力有關。

譬如以前是16為地址,指標即為2個位元組,

現在一般是32位系統,所以是4個位元組,

以後64位,則就為8個位元組。

擴充套件資料:1、在64位機器中:

char型別佔1個位元組,short型別佔2個位元組int型別佔4個位元組,long型別佔4個位元組unsigned int型別佔4個位元組,float型別佔4個位元組double型別佔8個位元組。long double型別佔12個位元組2、記憶體分配表

計算機中的記憶體都是編址的,就像你家的地址一樣。在程式編譯或者執行的時候,系統(可以不關心具體是什麼,可能是編譯器,也可能是作業系統)開闢了一張表。每遇到一次宣告語句(包括函式的傳入引數的宣告)都會開闢一個記憶體空間,並在表中增加一行紀錄。

記載著一些對應關係。

3、c語言

c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

9樓:匿名使用者

16位處理器可以一次性處理2個位元組的資料量,指標即為2個位元組;

32位處理器可以一次性處理4個位元組的資料量,所以是4個位元組;

64位處理器可以一次性處理8個位元組的資料量,所以是8個位元組。

指標是一個用來指示一個記憶體地址的計算機語言的變數或**處理器(cpu)中暫存器(register)。在使用一個指標時,一個程式既可以直接使用這個指標所儲存的記憶體地址,又可以使用這個地址裡儲存的函式的值。且一個位元組=8位。

10樓:千鋒教育

假設q指向int型別變數 (佔4個位元組)

假設r指向double型別變數 (佔8個位元組)sizeof(資料型別) 此運算子功能:返回值就是該資料型別所佔的位元組數。

sizeof(變數名) 此運算子功能:返回值就是該變數所佔的位元組數# include int main(void)執行結果:總結:任何型別的指標變數都是佔用4個位元組。

11樓:天雲一號

c語言規定一個指標佔4個位元組。

檢視指標所佔位元組數可以用sizeof( )函式進行測試。如:

char a = "abcdefgh";

char *p = a;  // 定義一個指標變數,指向字元陣列aprintf("%d\n", sizeof(p));  // 輸出指標所佔的位元組數,輸出4

12樓:匿名使用者

指標佔用多少位元組,取決於所使用的編譯器版本,編譯器有16位、32位、64位之分,16位和32位編譯器可以執行在32位作業系統上,而64位作業系統可以執行這三種編譯器。

16位編譯器下,一個指標佔用2位元組;32位編譯器下,一個指標佔用4位元組;64位下,一個指標佔用8位元組。

當前(2023年1月)國內大部分電腦已經使用上了64位windows作業系統,但visual studio等程式設計軟體預設使用的編譯器是32位編譯器,因此最常見的情況是一個指標佔用 4 個byte。

蘋果的macos系統自帶clang編譯器,預設是64位,因此通常在蘋果電腦上編寫c語言程式時,指標佔用8個位元組。

13樓:鬼火狼煙

指標長度和執行程式的作業系統是有關係的,lz的老師說是2在現在來說的確是錯誤的,一般編譯器會把指標的長度定義為系統的字長(這點lz應該堅持自己的想法呵呵),指標的長度在16位os比如dos上的確是2個位元組,但是在32位的windows上,就是4位,很多老版本的c教材都是2個位元組,這個不能籠統的說是錯了,而是有它的歷史原因在裡面.所以lz的老師應該多看看新版本的書籍了,教育應該和科技的發展接軌才可以呵呵~

c語言中,陣列在記憶體中佔一片()的儲存區,由()代表它的首地址

14樓:匿名使用者

陣列在記憶體中佔一片(連續)的儲存區,由(首元素的地址)代表它的首地址

陣列名是一個(指標)常量,不能對它進行賦值運算

15樓:

陣列名是一個指標常量,不能給其賦值,就像1,2,3這樣的整數一樣值已給定!

c語言中「指標」和「指標變數」的區別是什麼??

16樓:大野瘦子

1、概念不同

「指標」是概念,「指標變數」是具體實現,指標也是一個變數,所以需要進行定義,而對於指標的定義,與一般變數一樣。

2、 存放地址不同

一個變數的(記憶體)地址稱為該變數的「指標」,通過指標能找到以它為地址的記憶體單元。而指標變數是用來存放另一個變數的地址的(即指標)。

指標和指標變數的關係

1、指標就是地址,地址就是指標。

2、地址就是記憶體單元的編號。

3、指標變數就是存放記憶體地址的變數。

4、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。

注:指標裡存的是100. 指標:地址 - 具體。

指標裡存的是地址,指標:指標變數 -可變。

指標的好處:

1、直接訪問硬體

2、快速傳遞資料(指標表示地址)

3、返回一個以上的值返回一個(陣列或者結構體的指標)4、表示複雜的資料結構(結構體)

5、方便處理字串

6、指標有助於理解物件導向

C語言中double p,a p和double a,p是不是等價的

二者是等價的。但你要搞清楚了,指標什麼時候也不加 宣告指標時,那個 是double的而不是p的。取指標指向的內容時的 p中的 是取值操作符,也不是p的!在一個型別符下宣告指標變數和普通變數時,在指標變數前寫一個 是為了區別這個變數是指標而不是普通變數,也是前面的型別符的。如 int a,p,b,q ...

在c語言中int和double怎麼轉換

1 開啟baivc軟體,新建一個空白的vc專案文du件 2 編寫轉換zhi程式,首dao先新增標頭檔案,在main主函式回中定義int型別變數答sum,count,再定義double型別變數todouble,並進行強制型別轉換,強制轉換的格式就是括號加要轉換的型別,最後使用printf列印結果 3 ...

c語言中double是什麼意思,c語言double什麼意思

double是c語言的一個關鍵字,代表雙精度浮點型。結構 1.從儲存結構和演算法上來講,double是64位的,所以double能儲存更高的精度。2.目前c c 編譯器標準都遵照ieee制定的浮點數表示法來進行float,double運算。這種結構是一種科學計數法,用符號 指數和尾數來表示。3.由於...