我想把一個二唯陣列丟進函數裡要怎麼宣告這個函數呀??
ex:
void main()
{
int a[10][10];
.
.
cout<<aaa( a )---->假設只傳入這個陣列
^^^^^
要怎麼寫??
}
int aaa( a )
^^^^^^
那這裡又要怎麼寫??
{
}
--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)
◎[ [1;33;46mNUDE [0m]From: 61-225-192-211.HINET-IP.hinet.net
簡單,用一個class或是struct包起來
struct p
{
char buf[10][10];
};
--
[1;32m┌───── [33m◆ [37mKKCITY [33m◆ [32m─────┐ [34m┐┌┐┐┌┐┌─┐┌┬┐┌┬┐┐ ┌ [m
[1;32m│ [31m bbs.kkcity.com.tw [32m│ [37m├┘┐├┘┐│ │ │ └┬┘ [m
[1;32m└── [34m《 [0;37mFrom:61.223.76.27 [1;34m》 [32m──┘ [36m┘ ┘┘ ┘└─┘└┴┘ ┴ ┴ [m
這是我用來test的無聊程式,麻煩看看那裡有問題,
它沒辦法運做!!我用vc++跑的!!
#include <iostream.h>
void aaa(int**b)
{
b[0][1] = 0;
}
void main()
{
int a[2][2] = {{0,1},{2,3}};
cout<<a<<endl;
cout<<&a[0][0]<<endl;
aaa(a);
cout<<a[0][0]<<endl;
}
--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)
◎[ [1;33;46mNUDE [0m]From: 61-225-197-81.HINET-IP.hinet.net
這行改成 void aaa ( int b[][2] )
> {
> b[0][1] = 0;
> }
原因是因為 b[2][2] 事實上是一塊 size 為 4 * sizeof(int)
的"連續"的記憶體, 當你要 b[0][1] 時, compiler 會幫你"算"出他的位址,
(試著自己算算看 ^_^, 不會很難的)
這也是為什麼除了第一維的大小外其它都要註明在 function prototype 的原因
( int b[][2], b 後的 [] 是第一維, [2] 是第二維 )
但這和 int ** b 意義上是完全不同的,
雖然在一維陣列可以通用, 但二維的 int ** b 所弄出來的陣列
一來不一定要連續, 二來他的第二維也不用同樣大小,
更不要說你沒把第二維後的大小給 function, 他不知道該怎麼算位址了
ps: 何不在 C/C++ 板或是 Programming 板問呢? :) 這問題和 OO 無關吧? :D
--
[0m [1;33m※ Origin: [36mYahoo!奇摩 大摩域 [37m<telnet://bbs.kimo.com.tw> [m
[1;35m◆ From: [1;32m67.233.44.145 [m