二維陣列無法當做函數指標參數? |
答題得分者是:richtop
|
hornacek
一般會員 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
void function(char **pstr) { // do something... } int main() { char str[10][256]; function(str); return 0; }我本來還以為二維陣列和二維指標是相同的東西,因此才會這樣寫。 結果compile後出現錯誤訊息: Cannot convert 'char(*)[256]' to 'char * *' 不知道我要怎麼寫才可以? 還有不知道有沒有大大知道為什麼不能這樣寫呢?謝謝! 發表人 - hornacek 於 2005/05/03 20:44:26 |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
hornacek兄改成這樣,如果想知道為何請寫個可接受參數ARGC與ARGV的MAIN用DEBUGGER去看比我們解釋的還清楚!
void function(char *pstr) { // do something... } int main() { char str[10][256]; function(*str); return 0; }----------------------------------------------- Creation is the fundation of promotion. |
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
hornacek 您好: 底下說明請參考。
如果要精確表示二維陣列,相關的維度資訊是不可少的!
//--------------------------------------------------------------------------- void function(char (*pstr)[256]) // char (*ptr)[256]由於運算子優先順序的關係, { // 括號是比須的! 於是變數pstr可以這樣解釋: // do something... // pstr是個指標,其型態為(去掉括號部分) char [256]。 } void __fastcall TForm1::Button1Click(TObject *Sender) { //char str[10][256]; // 全等於 char (str[10])[256]; char (str[10])[256]; // str是個陣列(目前的例子是有十個元素,其實就是個指標),什麼型態的陣列呢? // 去掉括號的部分就是其型態,char [256]。 function(str); } //---------------------------------------------------------------------------RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
hornacek
一般會員 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |