1,二维数组:
内存布局示例:
输出:
2,指向指针的指针:
输出:
内存布局示例:
点击(此处)折叠或打开
- int main()
- {
- int p[3][4];
- p[1][0]=123;
- /*
- 1, p+1是二维数组p中序号为1的行的首地址,而*(p+1)并不是p+1单元的内容,*(p+1)可以理解为由行地址的计算转向了列地址的计算。
- 如:*(p+1)表示第1行,第0列的地址。
- 2, 不要把&p[i]简单的理解为p[i]单元的地址,因为并没有给p[i]分配内存。&p[i]可以理解为由当前的列地址计算转向了行地址计算(&(*(p+i))=p+i)。
- */
- printf("%x\n%x\n%x\n%x\n",p[1],p+1,&p[1][0],&p[1]);
-
- return 0;
- }
2,指向指针的指针:
内存布局示例:
- int main()
- {
- int **p=newint*[3];
- p=new int*[3];
- p[0]=newint[4];
- p[1]=newint[4];
- p[2]=newint[4];
- /*
1, p+1是二维数组p中序号为1的行的首地址,而*(p+1)是p+1单元的内容。
2, &p[i]可以理解为p[i]单元的地址。
*/
- printf("%x\n%x\n%x\n%x\n",p[1],p+1,&p[1][0],&p[1]);
-
- delete[] p[0];
- delete[] p[1];
- delete[] p[2];
- delete[] p;
- return 0;
- }