语言程序设计第十九讲 指针课件

上传人:我*** 文档编号:145300869 上传时间:2020-09-19 格式:PPT 页数:25 大小:505.50KB
返回 下载 相关 举报
语言程序设计第十九讲 指针课件_第1页
第1页 / 共25页
语言程序设计第十九讲 指针课件_第2页
第2页 / 共25页
语言程序设计第十九讲 指针课件_第3页
第3页 / 共25页
语言程序设计第十九讲 指针课件_第4页
第4页 / 共25页
语言程序设计第十九讲 指针课件_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《语言程序设计第十九讲 指针课件》由会员分享,可在线阅读,更多相关《语言程序设计第十九讲 指针课件(25页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计基础主讲人:庞新苗手机:13560715936,第十九讲:指针(2)数组和指针,主要内容: 1、指向数组元素的指针; 2、用指针引用数组元素; 3、数组名作函数参数;,例:利用指针输出一维数组中的元素(243) #include stdio.h main() int a10,i,*p=a;/*对指针变量p初始化*/ for(;pa+10;p+)/*p作循环变量*/ scanf(%d,p); printf(the element of a :); for(p=a,i=0;i10;i+)/*对指针变量重新赋值*/ printf(a%d=%dn,i,*p+); ,一、指向数组元素的指针

2、变量,例 int array10; int *p; p=,数组名是表示数组首地址的地址常量,指针的运算 指针变量的赋值运算 p= (指针变量p2值p1) 不能把一个整数p,也不能把p的值整型变量,如 int i, *p; p=1000; () i=p; (),指针变量与其指向的变量具有相同数据类型,指针的算术运算: pi p id (i为整型数,d为p指向的变量所占字节数) p+, p-, p+i, p-i, p+=i, p- =i等 若p1与p2指向同一数组,p1-p2=两指针间元素个数(p1-p2)/d p1+p2 无意义,例 p指向float数,则 p+1 p+1 4,例 p指向int型

3、数组,且p= 则p+1 指向a1,例 int a10; int *p=,例 int a10; int *p1=,1,指针变量的关系运算 若p1和p2指向同一数组,则 p1p2 表示p1指的元素在后 p1=p2 表示p1与p2指向同一元素 若p1与p2不指向同一数组,比较无意义 p=NULL或p!=NULL,数组元素表示方法, 变址运算符 ai *(a+i),ai pi *(p+i) *(a+i),二、数组元素的引用方法,main() int a5,*pa,i; for(i=0;i5;i+) ai=i+1; pa=a; for(i=0;i5;i+) printf(*(pa+%d):%dn,i,*

4、(pa+i); for(i=0;i5;i+) printf(*(a+%d):%dn,i,*(a+i); for(i=0;i5;i+) printf(pa%d:%dn,i,pai); for(i=0;i5;i+) printf(a%d:%dn,i,ai); ,例 int a=1,2,3,4,5,6,7,8,9,10,*p=a,i; 数组元素地址的正确表示:(A) int y,*p= ,输出:5 6,例 注意指针变量的运算,6,main() int i,*p,a7; p=a; for(i=0;i7;i+) scanf(%d,p+); printf(n); for(i=0;i7;i+,p+) pri

5、ntf(%d,*p); ,例 注意指针的当前值,p=a;,指针变量可以指到数组后的内存单元,三、数组名作函数参数 数组名作函数参数,是地址传递 数组名作函数参数,实参与形参的对应关系,例 将数组a中的n个整数按相反顺序存放,实参与形参均用数组,void inv(int x, int n) int t,i,j,m=(n-1)/2; for(i=0;i=m;i+) j=n-1-i; t=xi; xi=xj; xj=t; main() int i,a10=3,7,9,11,0,6,7,5,4,2; inv(a,10); printf(The array has been reverted:n); f

6、or(i=0;i10;i+) printf(%d,ai); printf(n); ,m=4,例 将数组a中的n个整数按相反顺序存放,void inv(int *x, int n) int t,*p,*i,*j,m=(n-1)/2; i=x; j=x+n-1; p=x+m; for(;i=p;i+,j-) t=*i; *i=*j; *j=t; main() int i,a10=3,7,9,11,0,6,7,5,4,2; inv(a,10); printf(The array has been reverted:n); for(i=0;i10;i+) printf(%d,ai); printf(n

7、); ,实参用数组,形参用指针变量,例 将数组a中的n个整数按相反顺序存放,void inv(int *x, int n) int t,*i,*j,*p,m=(n-1)/2; i=x; j=x+n-1; p=x+m; for(;i=p;i+,j-) t=*i; *i=*j; *j=t; main() int i,a10,*p=a; for(i=0;i10;i+,p+) scanf(%d,p); p=a; inv(p,10); printf(The array has been reverted:n); for(p=a;pa+10;p+) printf(%d,*p); ,实参与形参均用指针变量,

8、例 将数组a中的n个整数按相反顺序存放,void inv(int x, int n) int t,i,j,m=(n-1)/2; for(i=0;i=m;i+) j=n-1-i; t=xi; xi=xj; xj=t; main() int i,a10,*p=a; for(i=0;i10;i+,p+) scanf(%d,p); p=a; inv(p,10); printf(The array has been reverted:n); for(p=arr;parr+10;p+) printf(%d ,*p); ,实参用指针变量,形参用数组,一级指针变量与一维数组的关系 int *p 与 int q

9、10 数组名是指针(地址)常量 p=q; p+i 是qi的地址 数组元素的表示方法:下标法和指针法, 即若p=q, 则 pi qi *(p+i) *(q+i) 形参数组实质上是指针变量,即int q int *q 在定义指针变量(不是形参)时,不能把int *p 写成int p; 系统只给p分配能保存一个指针值的内存区(一般2字节);而给q分配2*10字节的内存区,四、指针与二维数组 二维数组的地址,对于一维数组: (1)数组名array表示数组的首地址,即array0的地址; (2)数组名array是地址常量 (3)array+i是元素arrayi的地址 (4)arrayi *(array+

10、i),对于二维数组: (1)a是数组名, 包含三个元素 a0,a1,a2 (2)每个元素ai 又是一个一维 数组,包含4个 元素,int a34;,基类型,行指针与列指针,对二维数组 int a34,有 a-二维数组的首地址,即第0行的首地址 a+i-第i行的首地址 ai *(a+i)-第i行第0列的元素地址 ai+j *(a+i)+j -第i行第j列的元素地址 *(ai+j) *(*(a+i)+j) aij,a+i= int *p; for(p=a0;pa0+12;p+) if(p-a0)%4=0) printf(n); printf(%4d ,*p); ,p=*a; p=,作业(245) 一个数组有10个元素,利用指针将数组中的元素按相反的顺序输出。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号