close

一維

int main()
{
    int arr[] = {100, 101, 102};
    int *ptr = arr;
    cout << *ptr++ << endl;
    cout << *++ptr << endl;
    cout << ++*ptr << endl;
}

1. *ptr++:*和++運算優先順序相同,此敘述先印出100再將ptr指向下一位址
2. *++ptr:相當於*(++ptr),ptr先移到下一位址,在印出*ptr的值300
3. ++*ptr:相當於++(*ptr),++是針對*ptr的值加1,等同於 *ptr = *ptr + 1,因此印出301

 

二維

int j[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
 0  1 2 3
 4  5 6 7
 8  9 10 11

元素6的位址 = &j[1][2] == j[1]+2 == *(j+1)+2,j 與 j[0] 雖表示同一元素的位址,但是加1個單位的意義不同
j+1 == &j[1][0]
j[0]+1 == &j[0][1]


j 與 *j 皆表示第一列第一行元素的位址,而 j+1 與 *(j+1) 皆表示第二列第一行元素的位址
j[0] == j+0 == *(j+0)
j[1] == j+1 == *(j+1)
.    .    
.    .    
.    .    

元素6的位址 = &j[1][2] == j[1]+2 == *(j+1)+2
元素6的值 = j[1][2] == *(j[1]+2) == *(*(j+1)+2)
得到 j[x][y] == *(j[x]+y) == *(*(j+x)+y)

arrow
arrow
    文章標籤
    指標 陣列 C++
    全站熱搜
    創作者介紹
    創作者 胖打打 的頭像
    胖打打

    Keep learning

    胖打打 發表在 痞客邦 留言(0) 人氣()