看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 指標不是應該為call by refence 餵入的資料(Input): 兩個指標,一個矩陣 求最大值與最小值 預期的正確結果(Expected Output): 最大值的指標與最小值的指標能正確地指到 正確的位置 錯誤結果(Wrong Output): 指的位置為初始化的值 程式碼(Code):(請善用置底文網頁, 記得排版) #include<iostream> #include <iomanip> #define SIZE 10 using namespace std; typedef struct{ int key; }element; typedef struct stack *stackPointer; typedef struct stack{ element data; stackPointer link; }stack; void maxAndmin(stack list[],stackPointer max,stackPointer min); int main(){ stack list[SIZE]; /*一個stack矩陣*/ stackPointer max,min; srand(time(NULL)); max=&list[0];min=&list[0]; for(int i=0;i<SIZE;i++){ /*亂數初始化矩陣內容*/ list[i].link=&list[i+1]; list[SIZE-1].link=NULL; list[i].data.key=rand()%49+1; } maxAndmin(list,max,min); /*函式呼叫*/ for(stackPointer i=&list[0];i!=NULL;i=i->link) cout<<setw(3)<< i->data.key; cout<<"\n最大值為:"<<setw(3)<<max->data.key; cout<<"\n最小值為:"<<setw(3)<<min->data.key; getchar(); } void maxAndmin(stack list[],stackPointer max,stackPointer min){ for(stack *i=&list[0];i!=NULL;i=i->link){ if((i->data.key) > (max->data.key)){ max=i; } if(i->data.key <min->data.key) min=i; } } 補充說明(Supplement): 不知道錯在哪,自己debug的結果感覺是call by value 但指標不是call by refence嗎? 請高手們指點迷津!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.222.223
james732:但指標不是call by refence嗎? <=答案:不是 02/28 17:53
purpose:排版怎麼會亂成這樣 02/28 17:54
james732:改法一:http://nopaste.csie.org/bb4e8 02/28 17:59
james732:改法二:http://nopaste.csie.org/f3160 02/28 17:59
kira1101:感謝樓上的回答,這個想了一個禮拜,就是不知道哪邊錯了 02/28 17:59
james732:改法二才叫做call by reference 02/28 18:00
firejox:指標存著變數的位址-->仍然是一個值 02/28 18:09
kira1101:能問一下 為什麼第二種改法需要加取址運算子嗎? 02/28 18:10
firejox:取出指標的位址 02/28 18:23
firejox:也就是說他是指標的指標 02/28 18:24
annheilong:二樓會覺得亂是因為有些}位置在偏右的地方嗎? 02/28 18:25
purpose:對啊,運算子也都擠在一起,有些地方也少了空格 02/28 18:42