當前位置:首頁 » 存儲配置 » 數組存儲空間

數組存儲空間

發布時間: 2025-08-18 23:01:50

編譯原理:靜態數組的存儲空間可以在編譯時確定。這句話為什麼是錯的。請給出詳細原因,謝謝。

靜態數組指的是寫代碼期間就知道大小的數組,比如int a[10];

char s[] = "hello";

這個靜態和動態分配相區別,不要和static弄混了,static/extern/auto是用於說明變數的存儲方式——也就是說,靜態數組也可以是static的,也可以是extern的,也可以是auto的。

舉個例子,下面就是一個靜態數組,但是存儲方式是auto的。

voidtest()
{
inta[10];
}

這個數組的存儲空間無法在編譯時候確定,只能在運行期間確定,原因是:盡管可以確定數組的大小,但是不能確定它的首地址。

再比如:

static int sa[10] = {0};

這個數組的存儲空間在編譯時,就可以確定了。

Ⅱ 數據結構、數組存儲的地址怎麼計算

數組存儲地址的計算:

以二維數組為例,其他的依次類推

假設起始下標從0開始,按行存儲(總共有M行,N列):

A[i][j]=A[0][0]+(i*N+j)*L

這地方的L是數組中的一個元素所佔的存儲空間。

或:

即使A[8][5]前面有多少個元素,

行下標i從1到8,列下標j從1到10,所有A[8][5]之前共有n7*10+4(74)個元素,

每個元素的長度為3個位元組,故共有3*74=222個位元組

首地址是SA,則A[8][5]地址是SA+222

(2)數組存儲空間擴展閱讀:

在數據的順序存儲中,由於每個元素的存儲位置都可以通過簡單計算得到,所以訪問元素的時間都相同;而在數據的鏈接存儲中,由於每個元素的存儲位置保存在它的前驅或後繼結點中,所以只有當訪問到其前驅結點或後繼結點後才能夠按指針訪問到,訪問任一元素的時間與該元素結點在鏈式存儲結構中的位置有關。

熱點內容
javafor循環嵌套if 發布:2025-08-18 23:28:21 瀏覽:297
西裝配領演算法 發布:2025-08-18 23:26:38 瀏覽:497
ecshopsql漏洞 發布:2025-08-18 23:17:01 瀏覽:798
mac臨時文件夾 發布:2025-08-18 23:14:55 瀏覽:765
阿里雲搭建傳奇伺服器 發布:2025-08-18 23:14:06 瀏覽:452
硬體加密卡 發布:2025-08-18 23:08:17 瀏覽:985
農信交易密碼指的是什麼密碼 發布:2025-08-18 23:03:20 瀏覽:584
數組存儲空間 發布:2025-08-18 23:01:50 瀏覽:747
如解壓游戲 發布:2025-08-18 22:57:02 瀏覽:576
如何復制頁游密碼 發布:2025-08-18 22:49:13 瀏覽:386