[問題] Pointer宣告、call function

看板C_and_CPP作者 ( )時間12年前 (2013/07/17 15:09), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
最近在自學C/C++ 在Pointer遇到不少問題 想來請教各位: 1. 下例是C(m,n)的code #include <stdio.h> int CMN(int *, int); int main() { int i, j, *a; a=&i; printf("Input the base and times:"); scanf("%d %d", &i, &j); printf("\nThe answer is %d", CMN(*a,j)); } /* 上面會出現錯誤,但如果把星號去除,就沒問題 想問的是,會出現錯誤是因為 a=&i,所以 *a=i的值 而在CMN的定義 CMN(int *, int)已經說第1個一定是傳address 如果寫成 CMN(*a, j) 就違反定義了,因為 *a傳的是value 這樣理解是對的嗎? 還是有其他原因呢? */ int CMN (int *p, int q) { int sum=1; if (q == 0) return 1; else for (int c=1;c<=q;c++) { sum = sum * *p; } return sum; } 2. int a=8, *p=&a; 跟下面這樣寫一樣嗎? int a=8, *p; p=&a; 3. int a=8, *p=&a, &b=*p; b沒有宣告過,這樣合理嗎? b=8? 我看教學影片是說 &b不是b的位址,只是一個reference 但我不太懂b是要refernce什麼? 他在記憶體裡會有空間嗎? 謝謝各位的回應! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.161.46

07/17 19:30, , 1F
1.invalid conversion from 'int' to 'int*'
07/17 19:30, 1F

07/17 19:30, , 2F
錯誤訊息就已經告訴你了,原因是型態轉換錯誤
07/17 19:30, 2F

07/17 19:32, , 3F
2.兩種一樣,不過建議下面那個p要有初始化
07/17 19:32, 3F

07/17 19:32, , 4F
3.你是看那個教學影片...b都沒有宣告成功了,那來的
07/17 19:32, 4F

07/17 19:33, , 5F
那來的空間參考,而且&不是這樣用的
07/17 19:33, 5F

07/17 23:25, , 6F
謝謝!我是看台大開放式課程 不過那邊講師也是帶過一下而己@@
07/17 23:25, 6F

07/17 23:26, , 7F
所以我就不知道為何b沒宣告 他為何這樣拿來當範例
07/17 23:26, 7F

07/20 12:28, , 8F
第三題, b 最後是 reference 到 a , 然後你可能要先去
07/20 12:28, 8F

07/20 12:28, , 9F
查一下 ref. 的宣告和給值,它的做法是宣告並給初值。
07/20 12:28, 9F
文章代碼(AID): #1HvaCJ-F (C_and_CPP)