Re: [問題] 函數呼叫傳參數

看板C_and_CPP作者 (Monitor)時間10年前 (2014/12/30 15:17), 編輯推噓-2(022)
留言4則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《Ruid (南無地藏王菩薩)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : VC++ : 以下是程式碼 : #include <iostream> : using namespace std; : class stack : { : public: : int item[10]; : int top; : void create(**); : void insert(*); : } : void stack::create(**s) : { : (*s)=new stack; : (*s)->top=-1; : } : void stack::insert(*s) : { : int a; : cout<<"請輸入一個數"; : cin>>a; : s->top=++top; : s->item[top]=a; : } : void main() : { : stack *abc; : abc->create(&abc); : abc->insert(abc); : delete abc; : } : 問題: : 想請問各位大大,在main()中的 : abc->create(&abc)、abc->insert(abc),這二行的語法 : 雖然程式是可以執行,但語法看起來就感覺有點奇怪 : 謝謝各位。 變數都有記憶體位址 int a; &a 就是變數 a 的記憶體位址 在C裡面可以把別人的記憶體位址儲存起來,用來儲存記憶體位址的型別就叫做指標 int *a = 記憶體位址; 就是指標的宣告方法 a 是一個指標,儲存一個整數的記憶體位址 *a 就是這個整數的值 當然 指標 a 本身也有記憶體位址 &a 就是指標 a 自己的記憶體位址 要在別的函數裡修改 a 指標儲存的整數的話 ,就傳 a 過去(*a 只有值,改了也沒用) 同樣的,要在別的函數裡修改 a 指標指向的記憶體位址,就要傳 &a 過去(a 只是個值, 改了也沒用) 所以你那本書這樣寫也不能說他怎樣喇 因為他真的沒有寫錯... 頂多只能說是難以閱讀... -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.131.246 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1419952672.A.2E3.html

12/31 00:41, , 1F
他的程式已經不是難以閱讀的問題了 是根本不知所云
12/31 00:41, 1F

12/31 01:36, , 2F
沒有寫錯跟寫得好不好我覺得是兩回事..
12/31 01:36, 2F

12/31 02:52, , 3F
這不是難以閱讀,是跟本有錯
12/31 02:52, 3F

12/31 02:57, , 4F
在未初始化的指標上呼叫方法是未定義行為
12/31 02:57, 4F
文章代碼(AID): #1Kei8WBZ (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
3
20
完整討論串 (本文為第 3 之 3 篇):
問題
3
20
文章代碼(AID): #1Kei8WBZ (C_and_CPP)