下列程式片段中,假設 a、a_ptr 和 a_ptrptr 這三個變數都有被正確宣告,且 呼叫 G() 函式時的參數為 a_ptr 及 a_ptrptr。
G() 函式的兩個參數型態該如何宣告?- void G ( ___(a)___ a_ptr, ___(b)___ a_ptrptr)
- {
- …
- }
- void main ()
- {
- int a = 1;
- // 加入 a_ptr, a_ptrptr 變數的宣告
- …
- a_ptr = &a;
- a_ptrptr = &a_ptr;
- G(a_ptr, a_ptrptr);
- }
複製代碼 (A) (a) *int , (b) *int*int
(B) (a) *int , (b) **int**int
(C) (a) int*, (b) int*
(D) (a) int*, (b) int**
提示:
何謂指標 (pointer)?
指標,其實也只是一個變數,只是這個變數的意義是:指向某個儲存位址。很玄嗎? 一點也不。
a, b, c, d, p1, p2都是一般的變數,儲存在記憶體 (memory) 中。其中,p1變數所記載的值是變數a的記憶體 (memory) 位址,而p2則記載著b的記憶體位址,像這樣的狀況,我們就稱p1是一個指向a的指標,相同的,p2是一個指向b的指標。
在C/C++中,我們用下面的式子來表示這個關係:
int *p1 = &a;
int *p2 = &b;
其中的&,稱為address of (取址)。即,p1 = address of a,p2 = address of b。
另一個符號*,代表的意義是指標。
int *p1 要由後往前閱讀來瞭解它的意義:p1 is a pointer points to an integer。
因此,int *p1 = &a; 這整行,我們可以看成:p1 is a pointer points to integer variable a,即:p1是一個指標,指向整數變數a。- #include<iostream>
- #include<cstdlib>
- using namespace std;
- int main()
- {
- int a=10;
- int *p=&a;
- cout<<a<<endl;
- cout<<&a<<endl; //取址
- cout<<p<<endl;
- cout<<*p<<endl; //取值
- cout<<*(&(*(&a)))<<endl;
- system("pause");
- return 0;
- }
複製代碼本帖隱藏的內容需要回復才可以瀏覽 |