作者:
OPIV (Monitor)
2014-12-30 23:17:50※ 引述《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 只是個值,
改了也沒用)
所以你那本書這樣寫也不能說他怎樣喇
因為他真的沒有寫錯...
頂多只能說是難以閱讀...