收藏 分享(赏)

c语言指针第二节.ppt

上传人:wjmd390 文档编号:8116488 上传时间:2019-06-09 格式:PPT 页数:12 大小:94.50KB
下载 相关 举报
c语言指针第二节.ppt_第1页
第1页 / 共12页
c语言指针第二节.ppt_第2页
第2页 / 共12页
c语言指针第二节.ppt_第3页
第3页 / 共12页
c语言指针第二节.ppt_第4页
第4页 / 共12页
c语言指针第二节.ppt_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、Overview,常量,一、数字常量 (1)整型常量 123 0 (2)实型常量 0.0083 435.86 二、字符类型常量 (1) 单字符常量 a 5(2 )字符串常量 “hello” “a” 三、符号常量 #define N 10 四、指针常量(地址型数据)1000H2000H &a,变量,一、整型变量 int x=100; 二、实型变量 float x=1.3;double x=2.5; 三、字符型变量 char s1=#; 四、指针型变量 int *p=,案例 已知某个学生5门课程的成绩,求平均成绩。7_7.c,float aver(float *p) /*求平均值函数*/ int

2、i;float av,s=*p; for(i=1;i5;i+) s += *(p+i);av=s/5;return av; void main() float sco5=60,70,80,90,100,av;av=aver(sco); printf(“average score is %5.2fn“,av); 函数调用时先进行参数的值(地址型数据)传递, p=&sco0p=&sco0,*p就相当于sco0 p+1=&sco1,*(p+1)就相当于sco1 p+2=&sco2,*(p+2)就相当于sco2*(p+i)也可以表示为pi,形参数组p就相当于实参数组sco,使用普通指针变量表示二维数组

3、元素,main()int array34=1,2,3,4,5,6,7,8,9,10,11,12;int *pointer, row, col; pointer= 分析: pointer+row*4+col就相当于 &arrayrowcol 例如 1000H+1*4+2=1006H=&array12*(pointer+row*4+col)就相当于 arrayrowcol,使用行指针变量表示二维数组元素,main()int array34=1,2,3,4,5,6,7,8,9,10,11,12;int (*pointer)4, row, col; pointer=array; printf(“Inp

4、ut row = ”); scanf(“%d”, 不能用行指针变量直接表示数组元素的地址 数组元素的地址必须用普通指针变量表示 可以把行指针变量转换成普通指针变量(在行指针变量前面加*) pointer+1=1004H *(pointer+1)=1004H *(pointer+1)+2=1006H=&array12 *(*(pointer+1)+2)表示数组元素array12,8.3.2 二维数组与指针,2. 2维数组的指针 int array34; (1)从2维数组角度看,数组名array代表数组的起始地址, 是一个以行为单位进行控制的行指针: array+i:行指针值,指向2维数组的第i行

5、。 *(array+i):(列)指针值,指向第i行第列,仍为指针 *(*(array+i)j)表示 arrayij,(2)从1维数组角度看,二维数组array可以看成由array0、array1、array2构成,每个一维数组均由4个元素组成。arrayi是第i行1维数组的地址, 它指向该行的第0列元素。arrayi+j:(列)指针值,指向数组元素arrayij。*(arrayi+j):数组元素arrayij的值。,3. 2维数组指针作函数参数,2维数组的指针作函数实参时,有列指针和行指针两种形式。相应的,用来接受实参数组指针的形参,必须使用相应形式的指针变量,如下所示:实参: 列指针 行指针

6、 形参: (列)指针变量 行指针变量,例 有3个学生,每人参加5门课程的考试,求每个学生的平均分数 和每门课程的平均分数 (书P218),#include #define N 3 #define M 5int main(void) float stuave(float(*p)5);float courave(float *pt);static float scoreNM=100,60,70,81,52,62,71,83,92,98,90,70,50,60,40;int i;for(i=0;iN;i+)printf (“The average score of student %d:%6.2fn

7、“, i,stuave (score+i);printf (“n“);for(i=0;iM;i+)printf(“The average score of course %d:%6.2fn“, i,courave (score0+i);return 0; ,float stuave(float(*p)M) int i;float sum=0,ave;for(i=0;iM;i+)sum=sum+*(*p+i);ave=sum/M;return(ave); float courave(float *pt) int i;float sum=0,ave;for(i=0;iN;i+,pt=pt+M)su

8、m=sum+*pt;ave=sum/N;return (ave); ,return,小结,一、指针和指针变量的概念 二、指针变量的值是普通变量的地址(1)指针变量的定义、赋值及运算 (2)指针变量作函数参数,可以改变指 针变量所指向的变量的值,如案例3三、指针变量的值是一维数组的首地址(1)数组元素如何用指针变量来表示(2)会编写形参是指针变量,实参是数组名或指针变量的函数 四、行指针变量的值是二维数组的首地址(1)行指针变量是特殊的指针变量(2)行指针变量的定义、赋值及运算 int (*p)4;(3)二维数组元素如何用二维数组名或者行指针变量来表示(4)二维数组元素如何用一维数组名或指针变量来表示,作业,1.什么是指针和指针变量 2.比较案例2和案例3的异同 3.函数调用时,参数的传递方式有几种?列举程序说明实参和形参的传递过程 4.描述二维数组元素arrayij(1)使用行指针变量的形式 (2)使用普通指针变量的形式 (3)使用二维数组名的形式 (4)使用一维数组名的形式,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报