aalexx 10 發表於 December 1, 2011 檢舉 Share 發表於 December 1, 2011 下面是一個簡單的小程式目的在於列印二維陣列第二維度的長度都是相同的但第一維度的長度對於列印函數來說都是未知因為函數型態不是char所以str的函數不能用請問程式碼中/*?*/的部分要如何寫呢?#include<iostream>using namespace std;int print(int [][5]);int main(){int txf[2][5]={{1,1,1,1,1},{2,2,2,2,2}};int fxf[4][5]={{4,4,4,4,4},{5,5,5,5,5},{6,6,6,6,6},{7,7,7,7,7}};print(txf);system("pause");return 0;}int print(int q[][5]){ for(int z=0;z</*?*/;z++) { for(int x=0;x<5;x++) cout<<q[z][x]<<'\t'; cout<<'\n'; }} 鏈接文章 分享到其他網站
aalexx 10 發表於 December 4, 2011 作者 檢舉 Share 發表於 December 4, 2011 (已編輯) 剛剛編譯執行失敗~我原本也是這樣想用sizeof()查txf會得到40sizeof(int)=440=sizeof(int)*5*所求但是打進去發現他甚麼都印不出來好像是因為sizeof()是在編譯時運算的函數,在程式執行時已經是常數了不知道還有沒有其他方法? 此內容已被編輯, December 4, 2011 ,由 aalexx 鏈接文章 分享到其他網站
aalexx 10 發表於 December 5, 2011 作者 檢舉 Share 發表於 December 5, 2011 忘記哪裡有找到資料他說sizeof()函數後來也可以在程式執行中運算你的編譯器應該較新 鏈接文章 分享到其他網站
danny50610 10 發表於 January 3, 2012 檢舉 Share 發表於 January 3, 2012 老實說,我也不是很清楚我上知識+查的,它說「陣列大小的計算僅適用於靜態陣列,若是當成參數傳給 Function,Function 收到的只是一個指標,所以並無法計算陣列的大小」所以我想:或許你可以把函式宣告改成 int print(int [][5],int n);使用時:print(txf, sizeof(txf) / 5 / sizeof(int));把 /*?*/ 改成 n 。不過缺點是當陣列一多就很麻煩了。等待專家解答。:|P.S. 參考來源:如何取得C++陣列大小 <-----(他是問一維陣列,應該是很類似的問題)http://tw.knowledge.yahoo.com/question/question?qid=1405110204987 鏈接文章 分享到其他網站
Lynr 10 發表於 January 9, 2012 檢舉 Share 發表於 January 9, 2012 #include <iostream>using namespace std;template <typename t, size_t s>void print(t (&q)[s][5]){ for(int z=0;z<s;z++) { for(int x=0;x<5;x++) { cout<<q[z][x]<<'\t'; } cout<<'\n'; }}int _tmain(int argc, _TCHAR* argv[]){ int txf[2][5]={{1,1,1,1,1},{2,2,2,2,2}}; int fxf[4][5]={{4,4,4,4,4},{5,5,5,5,5},{6,6,6,6,6},{7,7,7,7,7}}; print(txf); cout<<'\n'; print(fxf); system("pause"); return 0;} 鏈接文章 分享到其他網站
Recommended Posts
請登入後來留意見
在登入之後,您才能留意見
立即登入