动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息



本月文章推荐
.backdoor病毒源代码.
.GCC 安装.
.PE文件格式详解(5).
.全国计算机编程大赛复赛试题2.
.将文件copy到剪贴板上.
.PE文件格式详解(1).
.论C/C++函数间动态内存的传递.
.在C++程序中添加逻辑流程控制.
.使用foreach来读取记录.
.指针与函数的关系.
.小型的文本编辑器(使用能通配符.
.256色汉字显示程序.
.TCP/IP编程实现远程文件传输.
.将程序从托管扩展 C++ 迁移到 C+.
.简单屏幕烟花程序.
.VC++动态链接库编程之MFC扩展 DLL.
.基于Visual C++的Winsock API研究.
.在VC中使用MATLAB C/C++函数库.
.BCB中用Sender参数实现代码重用(.
.C++对象布局及多态实现之带虚函数.

对C/C++中多维数组指针的理解

发表日期:2008-3-8 |


对于多维数组的理解比较困难,这也是由于和一维数组指针含义有冲突造成的,因此对于多维数指针的理解是个比较难,需要反复观察,谨慎使用,假如多维数组的概念不清楚那就需要从C/C++基础学起注重知识的积累!

 C 代码  /*程序作者:管宁 

所有稿件均有版权,如要转载,请务必闻名出处和作者*/
 
#include <stdio.h> 
main() 
{ 
 static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; /* 定义一个3行4列的二维数组 */
 int *p; 
 printf("%d %d\n",a,*a); 
 printf("%d %d\n",a[0],*(a+0)); 
 printf("%d %d\n",&a[0],&a[0][0]); 
 printf("%d %d\n",a[0][0],*(*(a+0)+0)); 
 for (p=a[0];p<a[0]+12;p++) /* 把a[0]的地址赋予指针变量p,条件判定p<a[0]+12表示的是小于最后一个元素的地址; */
 { 
  if((p-a[0])%4==0) /* 利用整数指针变量p减去当前地址判定出是不是已经显示出了四个值,换行回车 */
  { 
   printf("\n"); 
  } 
  printf("%4d",*p); /* 打印出元素的值 */
 } 
 printf("\n"); 
} 
 
/* 
第5行中的a和*a打印出来的值,就会让人弄不明白我们知道数组传递的地址那么a表示这个数组的其实地址为什么*a却不是实际值呢?原因是在多维数组中a+0表示的是第0行的首地址,a+1表示是第一行的首地址,那么*a其实就是*(a+0),那么第一个元素其实是a[0][0]
而*(a+0)仅仅是把一个3行4列的二维数组拆为了三个一维数组,*(a+0)显然表示的不是物理位置也就不可能得到第一个元素的值了,它仅仅是一个内存地址也就是第0行的启始地址,再看8行中的*(*(a+0)+0),它表示的则是第0行第0列个元素的值也就是a[0][0],再次强调*(a+0)表示的是数组第一行的首地址,也就是第二行的*(a+1),而元素值要得到显然就是*(*(a+0)+0)了假如是第0行第1个也就是*(*(a+0)+1)。
*/

  下面这个例子可以帮助我们理解多维数组指针作为函数参数传递的使用方法,通过这段代码可以帮助你更好的理解多位数组指针。

 C 代码   
/*程序作者:管宁 

所有稿件均有版权,如要转载,请务必闻名出处和作者*/
 
#include <stdio.h> 
 
main() 
{ 
 void search_score(); /* 定义自定义涵数类型为不返回型 */
 void count_avg(); /* 定义自定义涵数类型为不返回型 */
 static float a[3][4]={{97,45.5,66,77},{88,92.5,78.5,66},{83,74.5,92,100}}; /* 输入3个学生的各自4门课的成绩 */
 search_score(a,0); /* 调换自定义涵数显示其中一个同学的各门课成绩 */
 count_avg(*a,12); /* 调换自定义涵数显示3个同学各门课的平均成绩成绩 */
 /* 注重上面的*a其实也就是a[0]或者是&a[0][]0将这行改写成count_avg(a[0],12);或者count_avg(&a[0][0],12)也都是对的 */
} 
 
void search_score(p,n) 
float (*p)[4]; /* 定义一个指针变量p,说明它是一个指向一个包含4个整型变量一维数组的指针 */
int n; /* 定义形式参数n为整形 */
{ 
 int i; /* 定义用于循环的变量i */
 for (i=0;i<4;i++ ) /* 这里循环4次用于打印一个同学的4门课成绩 */
 { 
  printf("%7.2f",*(*(p+n)+i)); 
 } 
 printf("\n"); 
} 
 
void count_avg(p,n) 
float *p; 
int n; 
{ 
 float *p_end; 
 float sum = 0; 
 float avg; 
 p_end = p+n-1; /* 计算出最后一个数组元素的地址 */
 for (;p<=p_end;p++) /* 循环到最后一个元素地址就停止 */
 { 
  sum += *p; 
 } 
 avg = sum/n; 
 printf("avg=%7.2f\n",avg); 
} 
 
/* 
注重此题的意思在于输入3个同4门课的成绩,计算出平均值和显示其中一个同学的4门课成绩,此例是对多维数组指针和多维数组 
的指针作为涵数参数传递的总结,认真联系和体会可以很好的了解多维数组指针的概念到底是什么! 
*/
更多文章 更多内容请看C/C++技术专题专题,或 right">(出处:清风软件下载学院)

上一篇:Visual C++常用数据类型转换详解 人气:244
下一篇:c/c++中字符串常量的不相等性,以及字符串的copy 人气:229
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-8 ECShop v2.6.0 Build 20080707(G
2008-7-8 动网论坛PHP版 v2.0++ Build 080
2008-7-8 中国IT总舵 v9.0 UTF版
2008-7-8 凹丫丫新闻发布系统 v4.6 Build
2008-7-8 topview数据查询 v3.0
2008-7-8 Z-Blog v1.8 Spirit Build 80708
2008-7-8 Z-Blog v1.8 Spirit Build 80708
2008-7-8 凹丫丫新闻发布系统 v4.6 Build
2008-7-8 新动软万能网站内容管理cms系统
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報