C语言第十五讲(指针与数组).doc

C语言第十五讲(指针与数组).doc

ID:51687795

大小:730.00 KB

页数:12页

时间:2020-03-15

C语言第十五讲(指针与数组).doc_第1页
C语言第十五讲(指针与数组).doc_第2页
C语言第十五讲(指针与数组).doc_第3页
C语言第十五讲(指针与数组).doc_第4页
C语言第十五讲(指针与数组).doc_第5页
资源描述:

《C语言第十五讲(指针与数组).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、指针与数组1.掌握指向数组的指针及其运算。2.掌握指向字符串的指针及其运算。3.掌握指针数组的概念和使用。1.指向数组的指针及运算2.指向字符串的指针及运算(一)导课在C语言中,指针与数组关系密切,数组名代表整个数组存储区起始地址,而指针也是表示地址,所以把数组的起始地址或把某一数组元素的地址赋给指针变量,指针变量即指向了该数组的首地址或者数组元素,因此任何能用数组下标完成的操作都有可用指针来完成。(二)课程要点一、指向一维数组的指针变量将一维数组的名字或某一数组元素的地址赋给指针变量,指针变量即指向该一维数组或

2、数组元素。例如:inta[7],*p;p=a;定义一维数组a和指针变量p,通过p=a;使p指向数组a的首地址,这时的*p就是a[0]的值。如右图所示。如果将数组元素a[2]的地址赋给变量p,即p=&a[2];则指针变量p指向数组元素a[2],这时的*p就是a[2]的值。如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。这里的p+1不是简单的将p值加1,而是p+1×d,其中d是一个数组元素所占的字节数。如果p的初值是&a[0],则p+3和a+3均表示a[3]的地址,如右图所示。因此,引入了指

3、针变量后,可以用两种方法来访问数组元素,下面通过例子说明。【例1】分别用下标法和指针法访问数组元素。#includevoidmain(){inta[7]={1,2,3,4,5,6,7};inti,*p;下标法for(i=0;i<=6;i++)printf("%d",a[i]);printf("");指针法for(p=a;p<=a+6;p++)printf("%d",*p);}也可以用数组名计算数组元素的地址,或用带下标的指针变量来引用数组元素。将上面的程序改写如下:#include

4、o.h>voidmain(){inta[7]={1,2,3,4,5,6,7};inti,*p;p=a;用数组名计算数组元素的地址for(i=0;i<=6;i++)printf("%d",*(a+i));printf("");用带下标的指针变量来引用数组元素for(i=0;i<=6;i++)printf("%d",p[i]);}二、指向多维数组的指针变量C语言允许把多维数组分为多个一维数组来处理,以二维数组为例。如有定义:inta[2][3]={{1,2,3},{4,5,6}};数组名a代表二维数组的首地址,即

5、二维数组0行的起始地址。二维数组名是指向行的。因此a+1代表第1行的首地址。而a[0]、a[1]可以分别看作是二个一维数组的数组名,是指向列元素的。因此它们分别代表第0行一维数组中的第0个元素的地址,即&a[0][0],a[0]+1是0行1列元素a[0][1]的地址,由此a[i]+j是一维数组a[i]的第j列元素首地址,即等于&a[i][j]。则指向二维数组的指针对变量说明形式为:类型说明符(*指针变量名)[数组长度]“类型说明符”为所指数组的数据类型。,“*”表示其后的变量是指针类型。“数组长度”表示二维数组分

6、解为多个一维数组时,一维数组的长度,也就是二维数组的列数。例如:inta[2][3];int(*p)[3];p=a;【例2】使用指针变量输出二维数组各元素的值。#includevoidmain(){inta[2][3]={{1,2,3},{4,5,6}};int(*p)[3];inti,j;p=a;for(i=0;i<2;i++){for(j=0;j<3;j++)printf("%3d",*(*(p+i)+j));printf("");}}上述程序也可作如下修改:#include

7、.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}};int*p;inti,j;p=a;for(i=0;i<2;i++){p=a[i];for(j=0;j<3;j++){printf("%3d",*p);p++;}printf("");}}【例3】运用指向二维数组的行指针变量,计算4名同学3门功课的总平均分。#includevoidmain(){floatscore[4][3]={{67,89,90},{87,77,91},{69,96,78},{79,86,

8、90}};float(*p)[3],sum=0,aver;inti,j;p=score;for(i=0,i<4;i++)for(j=0,j<3;j++)sum+=*(*(p+i)+j);aver=sum/12;printf(“average=%5.1f”,aver);}三、指针与字符串字符串在C语言中是用字符数组存放的,也可以用字符指针指向字符串,然后通过指针变量对字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。