程式設計 指標的題目

Assume the declaration int *ptr = &month[3]. Which of the following expressions are equivalent to *ptr?

(a) month

(b) ptr[0]

(c) ptr[1]

(d) *(month 3)

(e) (ptr)[0]

(f) (month 3)[0]

(g) (month 1)[2]

(h) *(month 3)[0]

這是小弟的作業..指標小弟覺得不容易 請各位大大指點吧!

3 Answers

Rating
  • Mark
    Lv 5
    2 decades ago
    Favorite Answer

    int *ptr = &month[3];

    表示 ptr是指到month[3]所在的位址

    所以 ptr = month+3, 而*ptr 就相當於 *(month+3) = month[3]

    要回答你的問題之前, 首先了解一下指標和陣列之間的關係

    可能會讓你比較好選答案

    基本上, 陣列的名稱可以想像成一個指標

    arry_name[index] 就相當於 *(array_name+index)

    所以 (array_name+n)[index] 就相當於 *(array_name+n+index)

    知道這樣的關係後, 再去選答案應該就很容易了

    因為 *ptr == month[3] == *(month+3)

    所以只要選項可以相等於 *ptr, month[3]或 *(month+3)都是對的答案

    (a) month ==> (X) , 這只是一個指標, month != *(month+3)

    (b) ptr[0] = *(ptr+0) = *ptr ==> (O)

    (c) ptr[1] ==> (X) , 這很明顯, ptr[1] = *(ptr+1) != *ptr

    (d) *(month+3) ==> (O)

    (e) (ptr)[0] = ptr[0] = *ptr ==> (O)

    (f) (month+3)[0] = *(month+3+0) = *(month+3) ==> (O)

    (g) (month+1)[2] = *(month+1+2) = *(month+3) ==> (O)

    (h) *(month+3)[0] ==> (X) ,

    資料型別完全不符 , 由(f)可以知道, (month+3)[0] = *ptr

    但 *(month+3)[0] != (month+3)[0]

  • Lv 7
    2 decades ago

    自己寫個程式試試看不就行了?

  • Anonymous
    2 decades ago

    如果您可以把問題說白話點不要用洋文來發問說不定小弟可以幫點忙,至少您要了解問的是啥吧

Still have questions? Get your answers by asking now.