二維陣列與二維指標 - w3c菜鳥教程
文章推薦指數: 80 %
#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
延伸文章資訊
- 1指標的指標
記憶體位址就單純是個值,若只是單純想儲存記憶體位址,使用void* 型態的指標就可以了。 ... 一維陣列變數的元素位址可以儲至 int* 指標,那二維陣列呢?在〈二維( ...
- 2指標應用:利用一維陣列模擬二維陣列@ Bryan的C語言筆記
201507210403指標應用:利用一維陣列模擬二維陣列 · num[row][column]; · num[2][5]; · int x, y; for(y=0; y<row; y++) f...
- 3指標(Poiner)與陣列(Array)的運用在二維陣列上 - 囈語、敘事
這幾天為了要寫一個二進制搜尋(Binary Searching)又複習了一下指標與陣列的使用。為了怕以後忘記不好找,就寫上來吧!變數(Variabel)可以看成盒子, ...
- 4二維陣列與雙重指標 - 程式人生
一、簡介. 1、二維陣列. int array[10][10]; 函式宣告: void fun(int a[][10]) 函式呼叫:fun(array); 訪問: 一般使用a[i][j]來訪問陣...
- 509_二維指標與陣列- 動態配置[m][n] 陣列@ 藍影
ptr = (資料型態*)malloc(sizeof(資料型態)*cnt);. 而今天我們要配置的是二維陣列,所使用到的指標是二次指標,也就是 int**, ...