指针与数组地址的偏移运算
笔记代码
int n[3][4] = {
{1,2,3,4},
{9,8,7,6},
{10,11,12,13}};
int(*pn)[4] = n;
cout << *(*(pn + 1) + 2) << endl;
cout << *(*(pn + 2) -5) << endl;
cout << *(*pn+7) << endl;
cout << *(*pn++ + 2) << endl;
cout << *(pn[-1] + 6) << endl;
cout << *pn[1] << endl;
pn = n;
int* p[3] = { n[1], n[2], n[0] };
int **pp = p;
cout << *(p[0] + 3) << endl;
cout << **pp++ << endl;
cout << *(*(pp + 1) + 2) << endl;
cout << *(pp[0]++ - 2) << endl;
cout << pp[0][-1] << endl;
练习代码
int n[3][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
int(*pn)[4] = n;
int *p[3] = { n[2], n[1], n[0] };
int **pp = p;
int(*pm)[3][4] = &n;
cout << **++pn << endl;
cout <<*(pn[-1]+2) << endl;
cout << *pn[1] + 2<< endl;
cout << pn[-1][5]<< endl;
cout << pn[2][-4] << endl;
cout << **++pp << endl;
cout << *++pp[0] << endl;
cout << pp[-1][2] << endl;
cout << pp[0][1] << endl;
return 0;