《C语言程序设计教程》电子教案-李淑华 第14讲 指针

上传人:E**** 文档编号:89400553 上传时间:2019-05-24 格式:PPT 页数:18 大小:71KB
返回 下载 相关 举报
《C语言程序设计教程》电子教案-李淑华 第14讲  指针_第1页
第1页 / 共18页
《C语言程序设计教程》电子教案-李淑华 第14讲  指针_第2页
第2页 / 共18页
《C语言程序设计教程》电子教案-李淑华 第14讲  指针_第3页
第3页 / 共18页
《C语言程序设计教程》电子教案-李淑华 第14讲  指针_第4页
第4页 / 共18页
《C语言程序设计教程》电子教案-李淑华 第14讲  指针_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《《C语言程序设计教程》电子教案-李淑华 第14讲 指针》由会员分享,可在线阅读,更多相关《《C语言程序设计教程》电子教案-李淑华 第14讲 指针(18页珍藏版)》请在金锄头文库上搜索。

1、第十四讲 指针,9.3 指针与数组(下) 9.4 指针与字符串 9.5 指针数组,9.3.3 指针变量的运算 如果p=a;a为一数组,则: (1)p+(或p+=1);p指向下一元素,即a1. 若再执行*p,取出下一个元素a1的值。 (2)*p+等价于*(p+),由于+和*同优先级,是自右向左结合。 作用:是先得到p指向变量的值(即*p),然后再使p+1p. (3)*(P+)与*(+P)作用不同。前者是先取*P值,后使P加1,后者是先使P加1,再取*P。若初值为a(即&a0),输出*(P+)时,得a0的值,而输出*(+P),则得到a1的值。,(4)(*P)+表示P所指向的元素值加1,即a0+,若

2、a0=3,a0+=4,注意:是元素值加1,而不是指针值加1。 (5)如果P当前指向a数组中第i个元素,则: *(P-)相当于ai-,先取p值作“*”运算,再使p自减。 *(+P)相当于a+i,先使p自加,再作*运算。 *(-P)相当于a-i,先使p自减,再作*运算。,9.3.4 数组名作函数的参数,如: main() f(b,n) int a10; int a ,n; f(a,10); ,说明: 用数组名作实参,在调用函数时是把数组的首地址传送给形参(注意:不是把数组的值传给形参)。 实参数组与形参数组共占同一段内存。,a,b,a0 b0,用变量名和用数组名作为函数的参数作一比较:,例9.7

3、将数组a中n个整数按相反顺序存放。即将a0与an-1交换,将a1与an-2交换-。 main() void inv(); static int i,a10=8,3,5,1,6,4,2,9,12,10; printf(“a10=“); for(i=0;i10;i+) printf(“%d,”,ai); printf(“n”); inv(a,10); printf(“a10=“); for(i=0;i10;i+) printf(“%d,”,ai); printf(“n”); ,void inv(x,n) int a ,10; int t,I,j,m=(n-2)/2; for(i=0;i=m;i+)

4、 j=n-1-i; t=xi;xi=xj;xj=t; ,如果有一个实参数组,想在函数中改变此数组的元素的值,实参与形参对应关系的以下4种情况:,(1) 形参和实参都用数组名,如: main() f(int x ,int n) int a10; F(a,10); ,a和x为数组,传递的是a数组的首地址。a和x数组共用一段内存单元,即在调用函数期间,a和x指的是同一数组。,数组a,x,a0,x0,a9,x9,实参用数组名,形参用指针变量。如: main() f(int *x,int n) int a10; f(a,10); ,实参a为数组名,形参x为指向整型变量的指针变量,函数开始执行时,x指向工

5、a0,即x=&a0。通过x值的改变量,可以指向a 数组中的任一元素。,数组a,x,a0,a9,实参和形参都用指针变量。如: main() f(int *x,int n) int a10,*p; p=a; f(p,10); ,实参p和形参x都是指针变量。先使实参指针变量p指向数组a,p的值是&a0。然后将p的值传递给形参指针变量x,x的初值也是&a0,通过x值的改变可以使x指向数组a的任一元素。,P,x,a0,数组a,a9,(4) 实参为指针变量,形参为数组名。如: main() f(int x ,int n) int a10,*p; - p=a; f(p,10); ,实参p为指针变量,它使指针

6、变量p指向a0,即p=a或p=&a0。形参为数组名x,实际上是将x作为指针变量处理,今将a0的地址传递给形参x取得a数组的首地址,x数组和a数组共用同一段内存单元。在函数执行过程中可以使xi值变化,它就是ai。主函数可以使用变化了的数组元素值。,p,a0,x0,a9,x9,9.4 指针与字符串,在C程序中,可以用两种方法使用字符串:字符数组;字符指针。 9.4.1 字符数组 例9.8 用字符数组输入一个字符串 Main() char str =“I love china!”; Printf(“%sn”,str); ,9.4.2 字符指针 例9.9 定义一个字符指针,用字符指针指向字符串中的字符

7、。 main() char *str=“I love china!”; printf(“%s”,atr); 这里没有定义字符数组,在程序中定义了一个字符指针变量str。给定一个字符串常量“I love china!“,说明: C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组来存放字符串常量。 程序在定义字符指针变量时把字符串首地址(即存放字符串的字符数组的首地址)赋给指针变量。而不是把字符串赋给指针变量或把字符串存到指针变量中。 char *str=“I love china!”; 等价于: char *str; str=“I love china!”; 输出时系统先输出它所指

8、向的一个字符数据,然后自动使str加1,使之指向下一个字符,然后再输出一个字符,直到遇到0为止,9.5 指针数组,9.5.1 指针数组的引用 格式:类型标识 *数组名数组长度 功能:指向一维数组的指针变量。 说明:适合于指向若干个字符串,使字符串处理更加灵活。 例如:int *p4;开辟了四个存贮单元:p0,p1,p2,p3。 指针数组在说明的同时可以进行初始化。,例9.10 字符指针数组的初始化。 main() char *week=“Sunday”,”Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”; int i; W

9、hile(1) printf(“Enter week No:”); scanf(“%d”, ,例9.11 将4个字符串:dog, can, pig和 all animal用指针数组输出。 main() char *S4; int i; S0=“dog”; S1=“can”; S2=“pig”; S3=“all animal”; for(i=0;i4;i+) printf(“%sn”,*(s+i); ,9.5.2 命令行参数,命令行参数:在运行程序的命令行上所输入的命令及其参数。 格式:main(argc,argv) 实参是和命令一起给出的。命令行的一般形式为: 命令名 参数1 参数2-参数n,命令行中参数的个数,指向字符串的指针数组,例9.12 编写一个程序,显示命令行上所有参数。 #include“stdio.h“ main(argc,argv) int argc; char *argv; int i; i=0; while(argc1) +i; printf(“%sn“,argvi); -argc; ,

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

当前位置:首页 > 高等教育 > 大学课件

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