指標應用:利用一維陣列模擬二維陣列@ Bryan的C語言筆記

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

201507210403指標應用:利用一維陣列模擬二維陣列 · num[row][column]; · num[2][5]; · int x, y; for(y=0; y #include intmain(){ intnum[2][5]={{1,2,3,4,5}, {6,7,8,9,10}}; intx,y; for(y=0;y<2;y++) for(x=0;x<5;x++) printf("%d\n",*(*num+x+y*5)); return0; } 看完上面這一段 你知道結果為何嗎? 答案就是:12345678910依序print出來 這個程式我們可以知道宣告了一個2*5的陣列 而我們其實可以將它視為兩個1*5的陣列 這個想法就差異很大了 如果我們將其視為多個一維陣列來表示的話 我們就可以宣告一維陣列的指標 int*array[]; 其中array[0]、array[1]皆儲存一個陣列的起始位址 因此由上面的例子我們可以知道 array[0]所代表的就是{1,2,3,4,5}陣列的起始位址 array[1]所代表的就是{6,7,8,9,10}陣列的起始位址 這樣我們就可以利用一維指標得到二維陣列的坐標內的數值了 那如果只想要取第二個陣列的數值 我們有兩種做法 第一種:直接令y=1 #include #include intmain(){ intnum[2][5]={{1,2,3,4,5}, {6,7,8,9,10}}; intx,y; for(y=1;y<2;y++){ for(x=0;x<5;x++){ printf("%d\n",*(*num+x+y*5)); } } return0; } 第二種:去除y項,直接對起始位址的index做處理 #include #include intmain(){ intnum[2][5]={{1,2,3,4,5}, {6,7,8,9,10}}; intx; for(x=0;x<5;x++) printf("%d\n",*(*(num+1)+x)); return0; } 下次的筆記會介紹有關字串處理 以及對於多維矩陣轉一維矩陣會做更詳細的解說[email protected]/Xuite日誌/回應(0)/引用(0)沒有上一則|日誌首頁|沒有下一則回應 加我為好友一個勇於追求新知識的中山人 熱愛攝影 勇於嘗試 理論與實踐並重:)日誌相簿影音 全部展開|全部收合 關鍵字 HiNet部落格背景音樂功能下架 b993011029311's新文章Homebrew-macOS不能沒有的超方便套件管理工具有關變數可視範圍(scope)的討論-1降級LinuxKernelVersiononUbuntuC程式型態轉換inttodouble&doubletoint指標應用:利用一維陣列模擬二維陣列好用的下載影片利器-youtube-dl進階指標-指標的使用指標入門-淺談指標的藝術C程式學習相關資料AboutThisNote b993011029311's新回應沒有新回應! Bryan的C語言筆記



請為這篇文章評分?