ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:18.34KB ,
资源ID:27453478      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27453478.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数组及指针 知识点总结.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数组及指针 知识点总结.docx

1、数组及指针 知识点总结第9章 数组第1课知识点一定义一维数组格式: 类型名 数组名元素个数例1 定义一个包含4个整数的数组a int a4;例2 定义一个包含3个双精度数的数组b double b3;注意: C语言中数组的下界从0开始计数。例如: a4的4个元素分别为a0、a1、a2、a3知识点二一维数组的初始化用一对大括号将数组的初值括起来。例1 int a3=1, 2, 3; 此例中a0值为1、a1值为2、a2值为3例2 int a5=0; 此例中数组a的全部元素值均为0例3 int a3=1, 2, 3, 4; 此例中由于初值个数多于数组元素个数,所以非法。例4 int a =0, 0,

2、 0, 0; 此例中省略数组元素个数,初值为4个0等价于int a4=0;注意: 数组名是一个常量值,不能对它赋值。例如: int a3; a=5; 此语句非法,应改为a0=5; 知识点三一维数组应用例1 从键盘上输入10个整数,输出最大数和最小数。#includemain() int a10,i,max,min; printf(请输入10个整数:n);for(i=0;i=9;i+) scanf(%d,&ai); max=a0; min=a0;for(i=1;imax) max=ai; if(aimin) min=ai; printf(最大数是%dn,max); printf(最小数是%dn,

3、min);例2 斐波数列的定义如下: 1、1、2、3、5、8、13、 编程输出斐波数列的第40项值。#includemain() long a40;int i; a0=1; a1=1;for(i=2;i=39;i+) ai=ai-1+ai-2; printf(%ld,a39);练习题1 从键盘上输入10个整数,输出其中完全平方数之和。2 从键盘上输入10个整数,输出和平均数最接近的数。第2课知识点一定义二维数组格式: 类型名 数组名一维上界二维上界例1 定义一个2行2列的整型数组aint a22;此例中数组a共有4个元素,分别是a00、a01、a10、a11。例2 定义一个4行4列的整型矩阵a

4、 int a44;二维数组看成一维数组例如: a34看成由a0、a1、a2组成的一维数组,每个元素又是由4个元素组成的一维数组。注意: a0、a1、a2不是元素,而是数组每行首地址。知识点二二维数组的初始化用嵌套的大括号将数组初值括起来。例1 int a43= 1,2,3, 4,5,6, 7,8,9, 10,11,12 ;例2 int a43= 1,2, 4,5, 7, 10 ;此例中系统自动给空缺的地方补0例3 int a43= 1,2, 4,5 ;系统自动给后面的行补初值0例4 int a43=1, 2, 4, 5;此例中数组a的第一行中元素和第二行的第一个元素依次为1,2,4,5其余全部

5、为0知识点三定义二维数组大小例1 int a 3= 1,2,3, 4,5, 6, 8 ; 有4个行花括号,因此说明是4行3列。例2 int a 3=1, 2, 3, 4, 5; 这种方式计算规则:1)第二维数值能被初值个数整除 第一维数=商数2)第二维数值不能被初值个数整除 第一维数=商数+1因此上例中表示一个2行3列数组。知识点四二维数组应用例1 从键盘上输入5个学生3门课程的成绩,分别计算每个学生的平均分和每门课程的平均分。#include#define M 5#define N 3main() int aMN,i,j,sum; printf(请输入15个分数(0-100):n); for

6、(i=0;i=M-1;i+) for(j=0;j=N-1;j+) scanf(%d,&aij); printf(每个学生的平均分n); for(i=0;i=M-1;i+) sum=0; for(j=0;j=N-1;j+) sum=sum+aij; printf(%4d,sum/N); printf(n); printf(每门课程的平均分n); for(i=0;i=N-1;i+) sum=0;for(j=0;j=M-1;j+) sum=sum+aji; printf(%4d,sum/M); 例2 从键盘上输入一个4行4列整数矩阵,输出左上至右下对角线元素之和。#include#define M

7、4#define N 4main() int aMN,i,j,sum=0; printf(“请输入16个整数:n”); for(i=0;i=M-1;i+) for(j=0;j=N-1;j+) scanf(%d,&aij); for(i=0;i=M-1;i+) sum=sum+aii;printf(%d,sum);练习题1 从键盘上输入一个4行4列的整数矩阵。输出此矩阵右上至左下对角线元素之和。2 从键盘上输入一个4行4列的整数矩阵。输出此矩阵下半三角形的所有元素之和。3 从键盘上输入一个4行4列的整数矩阵。输出此矩阵最外围元素之和。指针第1课知识点一定义一级指针格式: 类型名 *变量名例1 定

8、义两个指向整型变量的指针p1和p2。 int *p1, *p2;例2 定义两个整型变量m和n及两个指针p和q,并使 p和q分别指向m和n。int m, n, *p, *q;p=&m; 表示p存放变量m的地址q=&n; 表示q存放变量n的地址例3 定义一个包含10个整数的数组a和一个指针p,并使p指向a。 int a10, *p; p=a; 表示p指向数组a的首地址,即a0的地址。注意: 例3中p=a不能写成p=&a,因为a本身就是地址。知识点二定义二级指针格式: 类型名 *变量名假设已有下列定义: int *p, *s, k=0;例如: s=&k; 指针s指向变量k的地址 p=&s; 指针p指

9、向指针s的地址此时p为指向指针的指针,即二级指针。知识点三指针间的赋值假设已有下列定义: int *q, *p, k=0; q=&k;例如: p=q; 表示两指针间赋值,读作p指向q。此时p和q均指向变量k的地址。知识点四空指针在C语言中空值用NULL表示,其值为0定义指针时可以给指针赋值NULL例如: int *p=NULL; 表示p没有指向任何地址等价于p=0; 或 p=0;注意: 此时指针p没有实际单元,所以暂时不能访问。例如: int *p=NULL; printf(“%d”,*p); 此语句会产生出错信息第2课知识点一通过指针引用存储单元假设已有下列定义: int *p, m, n=

10、0;p=&n;例如: m=*p; 表示将p指向存储单元内容给变量m等价于m=n; *p=*p+1; 等价于n=n+1;注意: *p=*p+1; 还可以写成下面的形式*p+=1; 或 +*p; 或 (*p)+;知识点二指针的移动当指针指向一片连续空间时,移动才有意义。假设已有下列定义:int a5, *p, *q, k;p=a;例如: q=p+2; 表示将q指向元素a2的地址 p+; 表示将p向后移一个单元 q-; 表示将q向前移一个单元 k=p2; 等价于k=a3;知识点三指针的比较若两指针指向一片连续空间,可比较大小。假设已有下列定义:int a10, *p, *q, k; p=a; q=p

11、+2;例如: if( pq) printf(“p小于q”);由于条件成立,所以输出p小于q。 k=q-p; 表示p和q相差的地址值最后k值为2第3课知识点一指向数组的指针假设已有下列定义: int *p, *q, k;int a33;例如: p=&a22; 表示p指向元素a22的地址p=a1; 表示p指向数组a第二行的首地址 p+; 此时p指向元素a11的地址k=p2; 等价于k=a20; q=p-3; 此时q指向元素a01的地址 k=q1; 等价于k=a02; (*p)+; 此时元素a11的值加1 *q+; 此时q后移一个单元,a01值不变。 k=*(a1+2); 等价于k=a12;知识点二

12、指针数组格式: 类型名 *变量名元素个数假设已有下列定义: int *p3, a32, k;此例中p是一个指针数组,包含3个元素,每个元素均为一个指向int类型的指针。将指针数组和二维数组关联for(k=0;k=2;k+) pk=ak;此时p0、p1、p2分别指向数组a每行的首地址。例如: p0=a0; 表示p0指向数组a第一行首地址 p0+; 此时p0指向元素a01的地址 k=*(p1+1); 等价于k=a11; k=p21; 等价于k=a21;注意: pk和ak的区别 pk和ak两者均表示数组a第k+1行的首地址。pk能被赋值,而ak是地址常量,不能被赋值。例如: a0=p0; 此语句非法

13、,应改为p0=a0;知识点三指针的应用例1 从键盘上输入两个整数,输出较大数。(要求使用指针)#includemain() int a,b,*p,*q; p=&a; q=&b; printf(请输入两个整数:n); scanf(%d%d,p,q); if(*p*q) printf(%d,*p); else printf(%d,*q);例2 从键盘上输入10个整数,输出最大数和最小数。 (要求使用指针)#includemain() int a10,*p,k,max,min; p=a; printf(请输入10个整数:n); for(k=0;k=9;k+) scanf(%d,&pk); max=p

14、0; min=p0; for(k=1;kmax) max=pk; if(pkmin) min=pk; printf(最大数是%dn,max); printf(最小数是%dn,min);例3 从键盘上输入一个4行4列的整数矩阵,输出左上至 右下对角线元素之和。(要求使用指针)#include#define M 4#define N 4main() int aMN,*pM,k,j,sum=0; for(k=0;k=M-1;k+) pk=ak; printf(请输入16个整数:n);for(k=0;k=M-1;k+) for(j=0;j=N-1;j+) scanf(%d,&pkj); for(k=0;k=M-1;k+) sum=sum+pkk; printf(%d,sum);练习题1 从键盘上输入两个整数,输出它们的平方和。 (要求使用指针)2 从键盘上输入10个整数,输出所有完全平方数之和。 (要求使用指针)3 从键盘上输入一个4行4列的整数矩阵,输出最外围 元素之和。(要求使用指针)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1