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

數組存儲空間

發布時間: 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)數組存儲空間擴展閱讀:

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

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:585
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:881
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:574
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:761
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:677
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1005
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:250
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:108
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:799
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:705