返回列表 發帖

APCS 觀念題 10510 - 16

下列程式片段中,假設 a、a_ptr 和 a_ptrptr 這三個變數都有被正確宣告,且 呼叫 G() 函式時的參數為 a_ptr 及 a_ptrptr。
G() 函式的兩個參數型態該如何宣告?
  1. void G ( ___(a)___  a_ptr,  ___(b)___  a_ptrptr)
  2. {
  3.     …
  4. }

  5. void main ()
  6. {
  7.    int a = 1;
  8.    // 加入 a_ptr, a_ptrptr 變數的宣告
  9.    …
  10.    a_ptr = &a;
  11.    a_ptrptr = &a_ptr;
  12.    G(a_ptr, a_ptrptr);
  13. }
複製代碼
(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。
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6.     int a=10;  
  7.     int *p=&a;   
  8.     cout<<a<<endl;   
  9.     cout<<&a<<endl;   //取址   
  10.     cout<<p<<endl;  
  11.     cout<<*p<<endl;   //取值  
  12.     cout<<*(&(*(&a)))<<endl;
  13.     system("pause");
  14.     return 0;   
  15. }
複製代碼
本帖隱藏的內容需要回復才可以瀏覽

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見
Vincent

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表