linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > c/c++/c# >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Windows/Linux下配置Eclipse+C
·c语言static与extern的用法
·VC++(Ctime日期函数)应用
·typedef struct和struct的区别
·C/C++对文件操作
·C常用算法程序实例-线性代数方
·C#发送Email邮件方法总结
·struct的初始化,拷贝及指针成
·C语言入门实例 switch使用
·c++二叉树实现源代码
·对初学者的建议:如何学习C语言
·C++ Builder 处理控件中的文本
·常用的BCB & Delphi 函数
·C++入门经典教程完全版01-引言
·C++ Builder 使用Canvas对象的
最新文章
·使用C/C++扩展Python
·C语言入门实例 switch使用
·在C#里实现DATAGRID的打印预览
·如何使用 Visual C# .NET 创建
·C#发送Email邮件方法总结
·一道C#面试题目引发的思考
·c语言艺术清屏
·c语言static与extern的用法
·大数的阶乘算法
·C#编码好习惯
·构造函数,复制构造函数
·typedef struct和struct的区别
·struct的初始化,拷贝及指针成
·超强的指针学习笔记推荐
·STL中erase方法对链表类容器的
Google
 
C/C++中数组和指针类型的关系的入门教程
[ 作者:  加入时间:2007-10-23 14:03:24  来自:Linux联盟收集整理 ]
对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指针特性的知识! dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
一个整数类型数组如下进行定义 dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
int a[]={1,2,3,4}; dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
如果简单写成 dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
a;//数组的标识符名称 dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
这将代表的是数组第一个元素的内存地址,a;就相当于&a[0],它的类型是数组元素类型的指针,在这个例子中它的类型就是int* dPDLinux联盟
dPDLinux联盟
如果我们想访问第二个元素的地址我们可以写成如下的两种方式! dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
dPDLinux联盟
&a[1]; dPDLinux联盟
dPDLinux联盟
a+1//注意这里的表示就是将a数组的起始地址向后进一位,移动到第二个元素的地址上也就是a[0]到a[1]的过程! dPDLinux联盟

dPDLinux联盟
dPDLinux联盟
数组名称和指针的关系其实很简单,其实数组名称代表的是数组的第一个元素的内存地址,这和指针的道理是相似的!

下面我们来看一个完整的例子,利用指针来实现对数组元素的循环遍历访问! dPDLinux联盟
dPDLinux联盟

dPDLinux联盟
//程序作者:管宁 dPDLinux联盟
//站点:www.cndev-lab.com dPDLinux联盟
//所有稿件均有版权,如要转载,请务必著名出处和作者 dPDLinux联盟
dPDLinux联盟
#include <iostream> dPDLinux联盟
using namespace std; dPDLinux联盟
dPDLinux联盟
void main(void) dPDLinux联盟
{ dPDLinux联盟
int a[2]={1,2}; dPDLinux联盟
dPDLinux联盟
int *pb=a; //定义指针*pb的地址为数组a的开始地址 dPDLinux联盟
dPDLinux联盟
int *pe=a+2; //定义指针*pb的地址为数组a的结束地址 dPDLinux联盟
dPDLinux联盟
cout << a << "|" << a[0] << "|" << *(a+1) << "|" << pb << "|" << *pb <<endl; dPDLinux联盟
dPDLinux联盟
while (pb!=pe) //利用地址进行逻辑判断是否到达数组的结束地址 dPDLinux联盟
{ dPDLinux联盟
cout << *pb << endl; dPDLinux联盟
pb++; //利用递增操作在循环中将pb的内存地址不断向后递增 dPDLinux联盟
} dPDLinux联盟
cin.get(); dPDLinux联盟
} dPDLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·c/c++中结构体(struct)知识点强化,链表的学习  (2007-10-23 14:09:55)
 ·c/c++中结构体的入门教程  (2007-10-23 14:08:41)
 ·C/C++中命令行参数的原理  (2007-10-23 14:07:35)
 ·C/C++中利用空指针(NULL),提高程序运行效率  (2007-10-23 14:07:04)
 ·c/c++中的字符指针数组,指向指针的指针的含义  (2007-10-23 14:06:26)
 ·c/c++中字符串常量的不相等性,以及字符串的copy  (2007-10-23 14:05:52)
 ·C/C++中枚举类型(enum)的入门教程  (2007-10-23 14:02:09)
 ·C/C++中多维数组的指针作为函数参数传递  (2007-10-23 14:00:11)
 ·c/c++关于多维数组指针变量  (2007-10-23 13:59:30)
 ·c/c++中利用数组名和指针进行排序的例子  (2007-10-23 13:58:50)