指向指针指针

指向指针指针

ID:20473676

大小:59.50 KB

页数:6页

时间:2018-10-13

指向指针指针_第1页
指向指针指针_第2页
指向指针指针_第3页
指向指针指针_第4页
指向指针指针_第5页
资源描述:

《指向指针指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、10.7指针数组和指向指针的指针10.7.1指针数组的概念一个数组的元素值全为指针则是指针数组。指针数组是一组有序的指针的集合。指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。指针数组说明的一般形式为:类型说明符*数组名[数组长度]其中类型说明符为指针值所指向的变量的类型。例如:int*pa[3]表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。【例10.33】通常可用一个指针数组来指向一个二维数组。指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向

2、一个一维数组。main(){inta[3][3]={1,2,3,4,5,6,7,8,9};int*pa[3]={a[0],a[1],a[2]};int*p=a[0];inti;for(i=0;i<3;i++)printf("%d,%d,%d",a[i][2-i],*a[i],*(*(a+i)+i));for(i=0;i<3;i++)printf("%d,%d,%d",*pa[i],p[i],*(p+i));}本例程序中,pa是一个指针数组,三个元素分别指向二维数组a的各行。然后用循环语句输出指定的数组元素。其中*

3、a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p与a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。读者可仔细领会元素值的各种不同的表示方法。应该注意指针数组和二维数组指针变量的区别。这两者虽然都可用来表示二维数组,但是其表示方法和意义是不同的。二维数组指针变量是单个的变量,其一般形式中"(*指针变量名)"两边的括号不可少。而指针数组类型表示的是多个指针(一组有序指针)在一般形式中"*指针数组名"两边不能有括号。例如:int(*p)[3]

4、;表示一个指向二维数组的指针变量。该二维数组的列数为3或分解为一维数组的长度为3。int*p[3]表示p是一个指针数组,有三个下标变量p[0],p[1],p[2]均为指针变量。指针数组也常用来表示一组字符串,这时指针数组的每个元素被赋予一个字符串的首地址。指向字符串的指针数组的初始化更为简单。例如在例10.32中即采用指针数组来表示一组字符串。其初始化赋值为:char*name[]={"Illagalday","Monday","Tuesday","Wednesday","Thursday","Friday","Satu

5、rday","Sunday"};完成这个初始化赋值之后,name[0]即指向字符串"Illegalday",name[1]指向"Monday"......。指针数组也可以用作函数参数。【例10.34】指针数组作指针型函数的参数。在本例主函数中,定义了一个指针数组name,并对name作了初始化赋值。其每个元素都指向一个字符串。然后又以name作为实参调用指针型函数day_name,在调用时把数组名name赋予形参变量name,输入的整数i作为第二个实参赋予形参n。在day_name函数中定义了两个指针变量pp1和pp2,

6、pp1被赋予name[0]的值(即*name),pp2被赋予name[n]的值即*(name+n)。由条件表达式决定返回pp1或pp2指针给主函数中的指针变量ps。最后输出i和ps的值。main(){staticchar*name[]={"Illegalday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};char*ps;inti;char*day_name(char*name[],intn);printf("inputD

7、ayNo:");scanf("%d",&i);if(i<0)exit(1);ps=day_name(name,i);printf("DayNo:%2d-->%s",i,ps);}char*day_name(char*name[],intn){char*pp1,*pp2;pp1=*name;pp2=*(name+n);return((n<1

8、

9、n>7)?pp1:pp2);}【例10.35】输入5个国名并按字母顺序排列后输出。现编程如下:#include"string.h"main(){voidsort(char*n

10、ame[],intn);voidprint(char*name[],intn);staticchar*name[]={"CHINA","AMERICA","AUSTRALIA","FRANCE","GERMAN"};intn=5;sort(name,n);print(name,n);}voidsort(char*na

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。