Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148646
  • 博文数量: 33
  • 博客积分: 1494
  • 博客等级: 上尉
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-24 21:50
文章分类

全部博文(33)

文章存档

2014年(1)

2013年(1)

2012年(2)

2011年(3)

2010年(26)

我的朋友

分类:

2010-12-12 20:54:16

指针数组的本质依然是一个数组,只不过若其元素均为指针类型数据,数组指针是指指向数组的一个指针。我相信上面的这个概念大部分人都能够说个差不多,但是我发现平时一般很少有人敢于在写程序的时候直接用指针数组和数组指针,究其原因,还是因为大部分人对这个概念的理解不够透彻。下面我就用一个简单的例子向大家展示一下指针数组和数组指针的使用方法,当然,我这个程序的组织可能有些混乱,希望大家在读的时候能够根据注释一步步阅读,理解一下小弟每行代码的“良苦用心”。
#include
using namespace std;
int main()
{
 //定义一整形数组
 int num[3] = { 1, 2, 3};
 int i = 0;
 //打印出每个整形数组元素的地址
 for(i = 0; i < 3; i ++)
 {
  cout<<"第"< }
 //定义一指针数组ptr,使其指向数组num
 int *ptr[3];
 //让指针数组的元素按顺序指向整形数组的元素
 for(i = 0; i < 3; i ++)
 {
  ptr[i] = &num[i];
 }
 //打印出每一个指针数组元素的值,可发现与与上面打印出的整形数组元素的地址相同
 for(i = 0; i < 3; i ++)
 {
  cout<<"第"< }
 cout< //下面就可以取指针数组元素所指向的整型变量的值了,可发现就是整形数组元素的值
 for(i = 0; i < 3; i ++)
 {
  cout<<"第"< }
 cout<
 //定义一二维整形数组n
 int n[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
 //定义一数组指针p
 int (*p)[3];
 //数组指针指向n[0]
 p = &n[0];
 //通过下面两个循环打印输出可以看出p++操作,实质是p增加了sizeof(int)*3
 for(i = 0; i < 3; i ++)
 {
  cout<<"&n["< }
 for(i = 0; i < 3; i ++)
 {
  cout< }
 cout< //利用数组指针输出整个二维数组的所有元素
 p = &n[0];
 for(i = 0; i < 3; i ++)
 {
  for(int j = 0; j < 3; j ++)
  {
   cout<<"第"<  }  
 }
 return 0;
}
程序运行结果如下:
第1个整形数组元素的地址:0012FF3C
第2个整形数组元素的地址:0012FF40
第3个整形数组元素的地址:0012FF44
第1个指针数组元素的值:0012FF3C
第2个指针数组元素的值:0012FF40
第3个指针数组元素的值:0012FF44
 
第1个整形数组元素的值:1
第2个整形数组元素的值:2
第3个整形数组元素的值:3
 
&n[0] = 0012FF08
&n[1] = 0012FF14
&n[2] = 0012FF20
0012FF08  0012FF14  0012FF20
 
第1个整形数组元素的值:1
第2个整形数组元素的值:2
第3个整形数组元素的值:3
第4个整形数组元素的值:4
第5个整形数组元素的值:5
第6个整形数组元素的值:6
第7个整形数组元素的值:7
第8个整形数组元素的值:8
第9个整形数组元素的值:9
Press any key to continue
阅读(1666) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-13 15:22:55

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com