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