全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:715
推到 Plurk!
推到 Facebook!

傳址呼叫為何compiler不過?

尚未結案
sunnysophia
一般會員


發表:8
回覆:4
積分:2
註冊:2004-11-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-24 12:22:57 IP:211.74.xxx.xxx 未訂閱
若寫一個函式如下
void ai(..., ..., double *A5) <---點點點代表其他的參數宣告
{
  .....
  .....
  for(d=0;d<4;d  )
  {
    A5[d] = A3[d] / A4;
  }
}
void main()
{
   double a[3][4]  
   .....
   .....
   for (i=0;i

        
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-24 13:22:16 IP:219.68.xxx.xxx 未訂閱
這個錯誤訊息跟傳址無關 你的ai() 回傳值是 void void ai(......double* A5) 但是你在main()中把 ai 回傳值指定給 a[i][d] 所以才會產生這個錯誤訊息
double ai(..., ..., double *A5) <---點點點代表其他的參數宣告
{
  .....
  .....
  for(d=0;d<4;d  )
  {
    A5[d] = A3[d] / A4;
  }
  //記得要return回傳值
}
sunnysophia
一般會員


發表:8
回覆:4
積分:2
註冊:2004-11-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-24 14:05:17 IP:211.74.xxx.xxx 未訂閱
引言: 這個錯誤訊息跟傳址無關 你的ai() 回傳值是 void void ai(......double* A5) 但是你在main()中把 ai 回傳值指定給 a[i][d] 所以才會產生這個錯誤訊息
double ai(..., ..., double *A5) <---點點點代表其他的參數宣告
{
  .....
  .....
  for(d=0;d<4;d  )
  {
    A5[d] = A3[d] / A4;
  }
  //記得要return回
}
//////////////////////////////////////////////////////////////// 首先謝謝您的回答 不過我有試過 如果我寫 double ai(......double* A5) { ..... ..... for(d=0;d<4;d ) { A5[d] = A3[d] / A4; } return <--------------------------我一定要寫return的 } 若寫return *A5 他也只傳一個 而且是A5[0] 也就是說 他每次都傳A5[0]給a[0][0],a[0][1],a[0][2],a[0][3] 這樣就不對了... 所以我才會想要”傳址” 但編譯還是不過...
發表人 - sunnysophia 於 2004/12/24 14:11:46
psl
一般會員


發表:6
回覆:30
積分:7
註冊:2003-06-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-24 15:07:19 IP:220.143.xxx.xxx 未訂閱
double ai(..., ..., int r,double *A5) 
{                
  .....
  .....
  for(d=0;d<4;d  )
  {
    A5[d] = A3[d] / A4;
  }
  return A5[r]; 
}    void main()
{
   double a[3][4]  
   .....
   .....
   for (i=0;i
這樣應該就可以用了 一次傳回一個 A5[d] ^_^
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-24 15:07:30 IP:218.167.xxx.xxx 未訂閱
*A5 傳回值本來就會變成第0個element 因為A5 本身就是 Array address pointer (指向第0個element)    
double ai(..., ..., double *A5, int idx) <---點點點代表其他的參數宣告
{
  .....
  .....
  for(d=0;d<4;d  )
  {
    A5[d] = A3[d] / A4;
  }
  return *(A5 idx);
}
void main()
{
   double a[3][4]  
   .....
   .....
   for (i=0;i
發表人 - chris_shieh 於 2004/12/24 15:14:52
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-26 23:48:15 IP:59.104.xxx.xxx 未訂閱
引言: 若寫一個函式如下
void ai(..., ..., double *A5) <---點點點代表其他的參數宣告
{
  .....
  .....
  for(d=0;d<4;d  )
  {
    A5[d] = A3[d] / A4;
  }
}
void main()
{
   double a[3][4]  
   .....
   .....
   for (i=0;i   請把上面那一行改成下面這樣就是正解,你的副函數不需重新定義
過,因為已經是傳址,所以A5這裡直接填寫 a[i][d]即可。           ai(..., ..., a[i][d] );   <==直接寫成這樣就是正解了..      不需再寫成 a[i][d] = ai(......); 
        還有你的副程式其實內容寫法也是錯誤的,你這樣寫絕對絕對會出問題,
你能肯定你每個變數後面還有四個預留的空間嗎? A5[d] 當d=4 的意思是
A5 (指標位置   4)     不止這裡出問題, /A4 這裡也是一個超級陷阱,你能確定 A4 不會變成 0??
你這個程式我跟你保證絕對一執行下去絕對就會當的一趟糊塗。     
       }
因 我想把A5的內容利用傳址方式傳給a[i][d]
也就是A5[0]=a[0][0],A5[1]=a[0][1],A5[2]=a[0][2],A5[3]=a[0][3]
但編譯不過 是說'=' : cannot convert from 'void' to 'double'
我知道它的意思 可是傳址不是這樣寫嗎?
麻煩大大糾正錯誤
謝謝
發表人 - 海星 於 2004/12/26 23:51:42
系統時間:2024-09-10 6:52:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!