欢迎来到天天文库
浏览记录
ID:59413128
大小:84.50 KB
页数:32页
时间:2020-09-19
《[工学]第16讲 数组的指针和字符串的指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、数组的指针1.数组与地址2.数组元素的访问二、字符串指针1.字符串指针的定义2.字符指针与字符数组的区别三、指针作为函数参数1.数组名作为函数参数2.字符指针作为函数参数第16讲数组的指针和字符串的指针C语言规定:数组名代表数组(元素)的首地址,即第一个元素的地址。若有:inta[10],*p=a;则:a与&a[0]是等价的指针变量p为数组的指针数组的指针:数组的起始地址,即数组元素的首地址。数组元素的指针:数组元素的地址。一、数组的指针1.数组与地址对数组的首地址加上偏移量x就可以得到其它元素的地址。例
2、:&a[1]表示数组元素a[1]的地址等价于a+1、p+1&a[x]表示数组元素a[x]的地址等价于a+x、p+x2.数组元素的访问下标法:用a[i]的形式存取数组元素。地址法:用*(a+i)的形式存取数组元素。指针法:用指针变量p指向数组的首地址,然后通过移动指针存取数组元素。如p=a,p+i。例a用下标法存取数组元素main(){inta[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%d",a[i]);printf
3、("");}例b用地址法存取数组元素main(){inta[10],i;for(i=0;i<10;i++)scanf("%d",a+i);for(i=0;i<10;i++)printf("%d",*(a+i));printf("");}数组元素的访问举例例c用指针法存取数组元素。(即通过指针指向数组的首地址,然后通过移动指针存取数组元素。)main(){inta[10],*p,i;for(i=0,p=a;i<10;i++)scanf("%d",p+i);for(i=0,p=a;i<10;i
4、++)printf("%d",*(p+i));printf("");}main(){inta[10],*p;for(p=a;p5、首地址&a[i]a+ip+i一维数组下标为i的元素地址a[0]*a*p一维数组下标为0的元素的值a[i]*(a+i)*(p+i)一维数组下标为i的元素的值注意:数组名是一个常量,不允许重新赋值。指针变量是一个变量,可以重新赋值。p+i和a+i均表示数组元素a[i]的地址,均指向a[i]。*(p+i)和*(a+i)均表示p+i和a+i所指对象的内容,即a[i]。*p++:等价于*(p++)。其作用:先得到*p,再使p=p+1。(*p)++:表示将p所指向的变量(元素)的值加1。即等价于a[i]++。例:inta[6、5]={0,2,4,6,8},*p;p=a+2;(*p)++;printf("%d",*p);程序段输出为:5例main(){inta[5]={0,2,4,6,8},*p,x;p=a;(*p)++;p=a+1;++(*p);p=a+2;(*p)--;p=a+3;--(*p);for(x=0;x<=4;x++)printf("%d",a[x]);printf("");}程序运行结果:13358指向数组元素的指针也可以表示成数组的形式,即允许指针变量带下标,如*(p+i)可以表示成p[i]。但需注意,如果p7、不指向a[0],则p[i]和a[i]是不一样的。如p=a+3;由于p指向a[3],所以p[3]就相当于a[6]而不是a[3]。这种方式容易出错,一般不提倡使用。字符串的处理是用字符型数组来实现的。用char型数组处理的字符串都可以用char型指针来处理。通常把char型指针称为字符串指针或字符指针。二、字符串指针在程序中定义一个字符指针变量,并将字符串的首地址赋给它,然后通过字符指针变量来访问字符串。例如:charstr[]="Cprogramming";char*p;p=str;或:char*str="Cpr8、ogramming";1.字符串指针的定义例:/*用字符数组实现字符串操作*/main(){charstr[]="WelcometostudyC!";inti;printf("%s",str);for(i=0;i<=7;i++)printf("%c",str[i]);printf("");}程序运行结果为:WelcometostudyC!Welcome例/*用字
5、首地址&a[i]a+ip+i一维数组下标为i的元素地址a[0]*a*p一维数组下标为0的元素的值a[i]*(a+i)*(p+i)一维数组下标为i的元素的值注意:数组名是一个常量,不允许重新赋值。指针变量是一个变量,可以重新赋值。p+i和a+i均表示数组元素a[i]的地址,均指向a[i]。*(p+i)和*(a+i)均表示p+i和a+i所指对象的内容,即a[i]。*p++:等价于*(p++)。其作用:先得到*p,再使p=p+1。(*p)++:表示将p所指向的变量(元素)的值加1。即等价于a[i]++。例:inta[
6、5]={0,2,4,6,8},*p;p=a+2;(*p)++;printf("%d",*p);程序段输出为:5例main(){inta[5]={0,2,4,6,8},*p,x;p=a;(*p)++;p=a+1;++(*p);p=a+2;(*p)--;p=a+3;--(*p);for(x=0;x<=4;x++)printf("%d",a[x]);printf("");}程序运行结果:13358指向数组元素的指针也可以表示成数组的形式,即允许指针变量带下标,如*(p+i)可以表示成p[i]。但需注意,如果p
7、不指向a[0],则p[i]和a[i]是不一样的。如p=a+3;由于p指向a[3],所以p[3]就相当于a[6]而不是a[3]。这种方式容易出错,一般不提倡使用。字符串的处理是用字符型数组来实现的。用char型数组处理的字符串都可以用char型指针来处理。通常把char型指针称为字符串指针或字符指针。二、字符串指针在程序中定义一个字符指针变量,并将字符串的首地址赋给它,然后通过字符指针变量来访问字符串。例如:charstr[]="Cprogramming";char*p;p=str;或:char*str="Cpr
8、ogramming";1.字符串指针的定义例:/*用字符数组实现字符串操作*/main(){charstr[]="WelcometostudyC!";inti;printf("%s",str);for(i=0;i<=7;i++)printf("%c",str[i]);printf("");}程序运行结果为:WelcometostudyC!Welcome例/*用字
此文档下载收益归作者所有