欢迎来到天天文库
浏览记录
ID:48735453
大小:341.00 KB
页数:50页
时间:2020-01-20
《C课件第14讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十四讲Begin:第七章指针数组的指针和指向数组的指针变量字符串的指针和指向字符串的指针变量7.3.1一维数组的指针和指向一维数组元素的指针变量数组的指针:数组的首地址。一维数组的指针:一维数组的首地址,也就是一维数组中第一个元素的地址。C语言规定:数组名代表数组的首地址。若有:inta[10];则:a与&a[0]是等价的数组元素的指针:数组元素的地址。指向一维数组元素的指针变量:存放一维数组首地址或数组元素地址的变量。7.3.1一维数组的指针和指向一维数组元素的指针变量一维数组的首地址加上偏移量x即可得到
2、其他数组元素的地址。例如:inta[10],*p;p=a;/*等价于p=&a[0]*/则有:&a[1]等价于a+1或p+1&a[i]等价于a+i或p+i注意:p+i指向数组的第i个元素,而不是简单地使指针变量p的值加i。其所代表的地址实际上是p+i×size(size为一个数组元素所占的字节数)。7.3.1一维数组的指针和指向一维数组元素的指针变量访问一个数组元素主要有两种形式:下标法:用a[i]的形式存取数组元素。指针法:用*(a+i)或*(p+i)的形式存取数组元素。其中a是一维数组名,p是指向数组元素的
3、指针变量。p的初值为数组a的首地址,可以通过指针变量赋值或加/减一个整数使p指向不同的数组元素。例如:inta[10],*p=a;p++;/*p指向a[1]*/p=a+5;/*p指向a[5]*/7.3.1一维数组的指针和指向一维数组元素的指针变量例通过下标法存取数组元素#includevoidmain(){inta[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%5d",a[i]);printf("
4、");}7.3.1一维数组的指针和指向一维数组元素的指针变量例通过数组名计算元素地址存取数组元素#includevoidmain(){inta[10],i;for(i=0;i<10;i++)scanf("%d",a+i);for(i=0;i<10;i++)printf("%5d",*(a+i));printf("");}7.3.1一维数组的指针和指向一维数组元素的指针变量例通过指针变量存取数组元素#includevoidmain(){inta[10],*p;
5、for(p=a;p6、向一维数组元素的指针变量用指针法访问数组元素的注意事项:(*p)++:表示将p所指向元素的值加1。例如:inta[5]={0,2,4,6,8},*p;p=a+2;(*p)++;printf("%d",*p);程序段输出结果为:57.3.1一维数组的指针和指向一维数组元素的指针变量例分析下面程序的输出结果#includevoidmain(){inta[5]={0,2,4,6,8},*p,i;p=a;(*p)++;p=a+1;++(*p);p=a+2;(*p)--;p=a+3;--(*p);7、for(i=0;i<=4;i++)printf("%5d",a[i]);printf("");}程序运行结果:133587.3.1一维数组的指针和指向一维数组元素的指针变量用指针法访问数组元素的注意事项:[]实际上是变址运算符,即编译时是将数组元素a[i]处理成*(a+i)的。因此指向数组元素的指针变量也可带下标。例如:*(p+i)可以表示成p[i]。注意:如果p不指向a[0],则p[i]和a[i]是不一样的。例如:inta[10],*p;p=a+3;/*p指向a[3]*/p[3]=25;/*p[3]等价8、于a[6]*/这种方式容易出错,一般不提倡使用。7.3.1一维数组的指针和指向一维数组元素的指针变量数组元素的访问小结inti,a[10],*p=a;表现形式含义&a[0]ap一维数组首地址&a[i]a+ip+i一维数组下标为i的元素地址a[0]*a*p一维数组下标为0的元素的值a[i]*(a+i)p[i]*(p+i)一维数组下标为i的元素的值多维数组的指针1.二维数组的存储结构与地址设有一个三行四
6、向一维数组元素的指针变量用指针法访问数组元素的注意事项:(*p)++:表示将p所指向元素的值加1。例如:inta[5]={0,2,4,6,8},*p;p=a+2;(*p)++;printf("%d",*p);程序段输出结果为:57.3.1一维数组的指针和指向一维数组元素的指针变量例分析下面程序的输出结果#includevoidmain(){inta[5]={0,2,4,6,8},*p,i;p=a;(*p)++;p=a+1;++(*p);p=a+2;(*p)--;p=a+3;--(*p);
7、for(i=0;i<=4;i++)printf("%5d",a[i]);printf("");}程序运行结果:133587.3.1一维数组的指针和指向一维数组元素的指针变量用指针法访问数组元素的注意事项:[]实际上是变址运算符,即编译时是将数组元素a[i]处理成*(a+i)的。因此指向数组元素的指针变量也可带下标。例如:*(p+i)可以表示成p[i]。注意:如果p不指向a[0],则p[i]和a[i]是不一样的。例如:inta[10],*p;p=a+3;/*p指向a[3]*/p[3]=25;/*p[3]等价
8、于a[6]*/这种方式容易出错,一般不提倡使用。7.3.1一维数组的指针和指向一维数组元素的指针变量数组元素的访问小结inti,a[10],*p=a;表现形式含义&a[0]ap一维数组首地址&a[i]a+ip+i一维数组下标为i的元素地址a[0]*a*p一维数组下标为0的元素的值a[i]*(a+i)p[i]*(p+i)一维数组下标为i的元素的值多维数组的指针1.二维数组的存储结构与地址设有一个三行四
此文档下载收益归作者所有