Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359202
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 1138
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 16:18
个人简介

最多140个字

文章分类

全部博文(60)

文章存档

2016年(1)

2015年(34)

2014年(25)

分类: C/C++

2014-04-23 12:56:44

1,二维数组内存布局:

点击(此处)折叠或打开

  1. int main()
  2. {
  3.     int p[3][4];
  4.     p[1][0]=123;

  5.     /*
  6.      1, p+1是二维数组p中序号为1的行的首地址,而*(p+1)并不是p+1单元的内容,*(p+1)可以理解为由行地址的计算转向了列地址的计算。
  7.      如:*(p+1)表示第1行,第0列的地址。
  8.      2, 不要把&p[i]简单的理解为p[i]单元的地址,因为并没有给p[i]分配内存。&p[i]可以理解为由当前的列地址计算转向了行地址计算(&(*(p+i))=p+i)
  9.      */

  10.     printf("%x\n%x\n%x\n%x\n",p[1],p+1,&p[1][0],&p[1]);
  11.     
  12.     return 0;
  13. }
输出:


2,动态二维数组内存布局:


点击(此处)折叠或打开

  1. int main()
  2. {
  3.     int **p=NULL;
  4.     p=new int*[3];
  5.     p[0]=new int[4];
  6.     p[1]=new int[4];
  7.     p[2]=new int[4];
  8.     /*
            1, p+1是二维数组p中序号为1的行的首地址,而*(p+1)是p+1单元的内容。
            2, &p[i]可以理解为p[i]单元的地址。
        */

  9.     printf("%x\n%x\n%x\n%x\n",p[1],p+1,&p[1][0],&p[1]);
  10.     
  11.     delete[] p[0];
  12.     delete[] p[1];
  13.     delete[] p[2];
  14.     delete[] p;

  15.     return 0;
  16. }
输出:


阅读(4608) | 评论(0) | 转发(0) |
0

上一篇:零长度数组的妙用

下一篇:二叉查找树

给主人留下些什么吧!~~