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)
文章標籤
全站熱搜