[問題] 新手求救 函式傳不回我要的值

看板C_and_CPP (C/C++)作者 (傻強)時間16年前 (2010/03/06 14:53), 編輯推噓4(4016)
留言20則, 3人參與, 最新討論串1/1
#include<stdio.h> #include<stdlib.h> void function(int*w,int*x,int*y); int main(void) { int w = 0 , x , y = 0 , z = 0 , p[100] ; char re = 'y' ; while(re=='Y'||re=='y') { printf("enter a number\n"); scanf("%d",&x); function( &w,&x,&y ) ; printf("小於%d的質數共有%d個\n",x,y); printf("分別為:"); for(z=0;z<w;z++) printf("%d",p[z]); printf("\n"); printf("繼續輸入請按Y\n"); flushall(); scanf("%c",&re); flushall(); } system("pause"); return 0 ; } void function(int*w,int*x,int*y) { int t = 0 , p[100] ; int a , b ; a = *x ; while( a >= 1 ) { b = a - 1 ; while(b>1) { if(a%b==0) break; else b = b - 1 ; if(b==1) { p[t]=a ; t = t + 1 ; } } a = a - 1 ; } *w = t ; *y = t + 1 ; return ; } 這是自己打的程式碼 不過function裡面的P[]不知道哪裡有問題 在main裡面就是印不出來 拜託板上的大大救救我 感謝 -- 好的課 值得你一修再修 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.73.248

03/06 14:55, , 1F
function裡的p[]跟main裡的p[]是兩個不一樣的東西, 存在
03/06 14:55, 1F

03/06 14:55, , 2F
不一樣的記憶體, 所以你function對p[]做的事對main裡的
03/06 14:55, 2F

03/06 14:56, , 3F
p[]一點影響都沒有; 不然你把main裡的改叫p1[],
03/06 14:56, 3F

03/06 14:56, , 4F
function裡的改叫p2[], 程式一樣會正常運作....
03/06 14:56, 4F

03/06 14:57, , 5F
懶人解法1. 把兩邊的p[]直接改宣告成一份全域變數的p[];
03/06 14:57, 5F

03/06 14:57, , 6F
欸都...因為你在函式裡面宣告的int陣列p,return之後就
03/06 14:57, 6F

03/06 14:57, , 7F
解法2. 把main裡的p[]的位址傳進function, 讓function對
03/06 14:57, 7F

03/06 14:58, , 8F
main傳入的p[]做運算. 如果兩個解法在講什麼你都看不懂,
03/06 14:58, 8F

03/06 14:58, , 9F
可能要請您把書拿出來再翻一翻:)
03/06 14:58, 9F

03/06 14:59, , 10F
麻煩自動省略在下那行XD|||
03/06 14:59, 10F

03/06 15:01, , 11F
希望下列連結能給你幫助: http://0rz.tw/zUUqd
03/06 15:01, 11F

03/06 15:03, , 12F
樓上, 第1原po的問題不是這個, 第2那個網頁的說法也不盡
03/06 15:03, 12F

03/06 15:04, , 13F
正確. 事實上在sub func內做動態配置記憶體然後將該指標
03/06 15:04, 13F

03/06 15:05, , 14F
return回caller是可行的, malloc本身就是這樣子的行為.
03/06 15:05, 14F

03/06 15:05, , 15F
void *MyMalloc(unsigned int size){
03/06 15:05, 15F
感謝大家 我大概知道問題在哪了 多謝各位的幫忙 ※ 編輯: shin583689 來自: 118.165.73.248 (03/06 15:07)

03/06 15:06, , 16F
return malloc(size); } // 這樣回傳是可行的:)
03/06 15:06, 16F

03/06 15:07, , 17F
感謝 V 大, 又上了一課
03/06 15:07, 17F

03/06 15:07, , 18F
當然該篇文內容舉的例子並沒有錯誤, 但是第一段開宗明義
03/06 15:07, 18F

03/06 15:08, , 19F
的文字會讓人誤解誤很大XD
03/06 15:08, 19F

03/06 15:08, , 20F
嗯, 看來是該修修內容, 謝謝指教
03/06 15:08, 20F
文章代碼(AID): #1BaVlJBs (C_and_CPP)
文章代碼(AID): #1BaVlJBs (C_and_CPP)