在數(shù)據(jù)結(jié)構(gòu)與算法中,地址計(jì)算是一個(gè)經(jīng)典但容易混淆的知識(shí)點(diǎn),尤其涉及不同類型數(shù)組與特殊矩陣時(shí)。本文將為你系統(tǒng)梳理從一維數(shù)組到對(duì)稱矩陣、三角矩陣和三對(duì)角矩陣的地址計(jì)算原理。\n\n## 一維數(shù)組地址計(jì)算\n假設(shè)一維數(shù)組 A[n] 的元素從下標(biāo)0開始,每個(gè)元素占用L個(gè)存儲(chǔ)單元,數(shù)組基地址為 &A[0](記為 base)。\n\n- 第i個(gè)元素的地址 LOC(A[i]):\n \[ \n LOC(A[i]) = base + i L\n \\]\n 只需注意中無需折算維度,一維僅僅是基本偏移基數(shù)乘以元素大小。\n\n例如:short arr[10],若 short 占2字節(jié),base 為2000,則:\narr[3] 地址 =2000+3</em>2=2006。\n\n## 二維數(shù)組地址計(jì)算\n二維數(shù)組看作邏輯結(jié)構(gòu)時(shí)有兩種存儲(chǔ)方式:\n1. 行優(yōu)先:[i][j]先行后列。\n2. 列優(yōu)先:[i][j]先列后行。\n設(shè)數(shù)組基地址 base、數(shù)組維度 row=m行、col=n 列,元素類型占用L單位。下標(biāo)通常都<=起始邊界(假如為了性能學(xué)習(xí)需統(tǒng)一以 b、y起點(diǎn)、從i=1,j=1計(jì)數(shù)可能會(huì)易通用,注意某些是討論最便利對(duì)通用的忽略層起差距這里最慣用簡潔而言>用于熟悉情況下再轉(zhuǎn)到面對(duì)可能excel值零或是數(shù)據(jù)差異是較為細(xì)節(jié)建議查數(shù)學(xué)少爭(zhēng)+未起真正通用取直觀i是既從0)。處理數(shù)據(jù)簡所以設(shè)i索引數(shù)值 且均為C\C++語境中從i=非1開始(稱為“已約定4向下標(biāo)靠特定學(xué)習(xí)”;多維約定練習(xí)記憶從通常起見默認(rèn)認(rèn)為入門: \n下面依于傳統(tǒng)一般最容易 按**常規(guī)默認(rèn)“行·主存”&&下標(biāo)從0~就是更現(xiàn)實(shí)編程來看 。 (用m行,n列);來 坐標(biāo)(A[i][j])求:\n行前式: LOC ( element Aij Ith J )=\nL ← actualincol為n‘u原基址:( base + (iofrow* n條實(shí)際加 +全列表的下標(biāo)之對(duì)應(yīng)j }) 然后乘 L每個(gè)需總偏移\n\n多繁一步折轉(zhuǎn)化為實(shí)際計(jì)算小細(xì)則可得 ——\n\n