shihyu
一般會員
發表:20 回覆:17 積分:7 註冊:2002-11-30
發送簡訊給我
|
我主要是想問二維陣列大小是由鍵盤輸入n值來決定陣列大小,,並非預先知道二維陣列大小,,, 使用Function call傳遞兩維陣列 PS:不是一般二維陣列喔....array[n][n];都是變數由鍵盤輸入n值,,,在使用Function call傳二為陣列 例如: int main()
{ cin>>n;
array[n][n]; sum(這要怎麼寫) //注意函數傳遞的二維陣列大小預先是不知道是由鍵盤輸入n值 } void sum(這要怎麼寫)
{ ..... }
|
allenchan
資深會員
發表:10 回覆:306 積分:283 註冊:2004-01-06
發送簡訊給我
|
char **array; cin >> n; array = new char*[n];
for (int i = 0; i < n; i )
array[i] = new char[n];
sum(array, n); void sum(char **ary, int n)
{
.....
}
最好把 n 傳進去,這樣才知道 ary 的維度。
|
Zard
尊榮會員
發表:24 回覆:396 積分:539 註冊:2003-11-26
發送簡訊給我
|
#include
#include
#include int Sum(int** IntArray)
{
int m, n, iResult = 0; // 用 _msize 計算原始二維陣列的大小, 使用_msize須include malloc.h
m = _msize(IntArray) / sizeof(int);
n = _msize(*IntArray) / sizeof(int); for(int i = 0; i < m; i )
{
for(int j = 0; j < n; j )
{
iResult = IntArray[i][j];
}
} return iResult;
} int main(int argc, char* argv[])
{
int** IntArray;
int m = 0, n = 0; // For IntArray[m][n] printf("請輸入IntArray[m][n] m的值 : ");
cin >> m;
if (m <= 0)
{
printf("m 必須為大於0的整數.\n");
return -1;
} printf("請輸入IntArray[m][n] n的值 : ");
cin >> n;
if (n <= 0)
{
printf("n 必須為大於0的整數.\n");
return -1;
} // 分配二維陣列記憶體
IntArray = (int**) malloc(sizeof(int*) * m);
for(int i = 0; i < m; i )
{
IntArray[i] = (int*) malloc(sizeof(int) * n);
for (int j = 0; j < n; j )
{
printf("請輸入IntArray[%d][%d]的值 : ", i, j);
cin >> IntArray[i][j];
}
} // 列印結果
printf("Sum = %d\n", Sum(IntArray)); // 釋放二維陣列記憶體
for (int k = 0; i < m; i )
{
free(IntArray[k]);
}
free(IntArray); return 0;
}
|
allenchan
資深會員
發表:10 回覆:306 積分:283 註冊:2004-01-06
發送簡訊給我
|
呵呵,那改成這樣好了,這樣傳 int **array 可以,double **array 也可以 .... 都可以。
template
T Sum(T** IntArray)
{
int m, n;
T iResult = 0;
// 用 _msize 計算原始二維陣列的大小, 使用_msize須include malloc.h
m = _msize(IntArray) / sizeof(T);
n = _msize(*IntArray) / sizeof(T); for(int i = 0; i < m; i )
{
for(int j = 0; j < n; j )
{
iResult = IntArray[i][j];
}
} return iResult;
}
int main(int argc, char* argv[])
{
//以下同 Zard 大大上面的 code
} 發表人 - allenchan 於 2004/12/03 14:04:26
|