二維陣列與二維指標 - w3c菜鳥教程

文章推薦指數: 80 %
投票人數:10人

#include int main() 對於一維陣列名稱與其對應的同指類指標變數(根據上述**執行結果講解):. double array[10], *p=array; //array、p的指類是double ... 二維陣列與二維指標 2021-08-2817:44:06字數2899閱讀4379 一.指標與二維陣列(以martix[3][4]為例): 1.二維陣列的本質:intmartix[3][4] intmartix[3][4]=>int[4] martix[3],令int[4]為type,  typemartix[3]為含有三個元素的陣列,每一個元素型別為int[4],int[4]是一個擁有4個int型別元素的一維陣列. 2.martix名稱含義(本質:二維陣列的首地址常量): &martix[0][0]  //取二維陣列第零行、第零列元素的首地址。

&martix[0][0]=>&(martix[0][0])=>&(*(martix+0)[0])=>&(*martix[0])=>&(*(*(martix+0)))=>&(*(*martix))=>*martix. martix[0][0]為二維陣列第零行的第零個元素,其首地址為整個二維陣列的首地址. 3.intmartix[3][4]的指類:  #includeintmain()對於一維陣列名稱與其對應的同指類指標變數(根據上述**執行結果講解): doublearray[10], *p=array;//array、p的指類是double; array[10]<=>p[10]成立,若陣列名稱arrray為實參,那麼形參就必須用類似於p型別的變數與之對應, 例:fun(double*p) fun(array); 將上述說法擴充套件至一般形式:typearray[n],*p=array; type可以是任意有效資料型別,以double[4]為例: double[4]arrary[3],double[4]*p;這種格式c編譯器不接受,需要調整,  double[4]array[3] =>doublearray[3][4]; double[4]*p=>double(*p)[4]//這裡注意,*p必須加小括號,因為的運算優先順序高於*,會成為double*(p[4]),改變原含義。

若忽略變數名稱=>double(*)[4]. 綜上所述,二維陣列的型別是double(*)[4]; #includeintmain()4.關於*martix和&martix[3][4]: *martix=>*(martix+0)=>martix[0]; &martix[0][0]=>*martix=>martix[0], &martix[1][0]=>&(*(martix[1]+0))=>&(*(martix[1]))=>martix[1], &martix[2][0]=>&(*(martix[2]+0))=>&(*(martix[2]))=>martix[2], 綜上所述:martix[i]為二維陣列的行指標. martix[0]的指類: *martix,對指標產生降階作用,martix的指類是double[4],經過降階後指類為double,所以martix[0]的指類是double. martix[i]+1將移動8位元組。

5.關於&martix: doublemartix[3][4], *(martix+i)中: martix+i將移動i*sizeof(double[4])個位元組,實際就是移動行指標, *具有降階作用,*(martix+i)的指類就是double型別,即,martix[i]是指標,是下標為i行的首地址,其指類是double型。

(martix[i]+j)=>*(martix[i]+j) martix[i]+j事實上移動了j*sizeof(double)個位元組。

因為martix的型別是double(*)[4],則&martix的指類就是double(*)[4], &martix+1移動96個位元組。

//根據上述條件,martix的型別就是double[3][4],則&martix+1移動sizeof(double[3][4])個位元組. 二.二維陣列和二維指標種類: 1.二維陣列(陣列的陣列): doublemartix[3][4]; 實參:doublemartix[3][4],形參:double(*)[4]; 訪問:一般使用martix[i][j]訪問元素。

#includevoidsu(double(*p)[4]); voidsu(double(*p)[4]) intmain() 2.指標陣列: double*martix[4]; 實參double*martix[4],形參double**martix, 訪問:使用*(martix[i]+j)訪問元素. #includevoidsu(char**p); voidsu(char**p) intmain() ; su(martix); return0; }3.指向指標的指標: char**martix; 實參char**marix,形參char**martix; 訪問:*(*(martix+i)+j). #includevoidsu(char**p); voidsu(char**p) intmain() ,**martix=p; su(martix); return0; } 相關推薦 ClassLoader學習和類載入器載入Jar檔案 簡練軟考知識點整理實施質量保證 win32下python操作redis 二維陣列與二維指標 Java多執行緒中國新說唱 相關推薦 ClassLoader學習和類載入器載入Jar檔案 簡練軟考知識點整理實施質量保證 win32下python操作redis 二維陣列與二維指標 Java多執行緒中國新說唱 相關閱讀 ClassLoader學習和類載入器載入Jar檔案 簡練軟考知識點整理實施質量保證 win32下python操作redis 二維陣列與二維指標 Java多執行緒中國新說唱 程式中的數學 topic 科技 教育 python 社會 linux 數碼 java c++ 遊戲 演算法 資料庫 健康 mysql 文化 汽車 娛樂 科學 財經 資料結構 C語言 職場 php oracle C c# 作業系統 工作 體育 網路 sql



請為這篇文章評分?