网站大量收购闲置独家精品文档,联系QQ:2885784924

教学课件 C程序设计(第三版)(荣政).ppt

  1. 1、本文档共1071页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  void main()   {   char string1[STRLEN],string2[STRLEN],*result; printf(Input two strings:\n); scanf(%s%s,string1,string2); result=maxstr(string1,string2); printf(The max string is:%s\n,result); }   程序运行情况:   Input two strings:   abcde abcee   The max string is:abcee 8.5 复杂指针 8.5.1 指向指针的指针   本节我们详细分析一下指向指针的指针。通过前面的学习我们知道:   char *pointer; 定义了指针pointer,它指向char型,用它可以存放字符型变量的地址,并且可以用它对所指向的变量进行间接访问。进一步定义:   char **p_p; 从运算符*的结合性可以知道,上述定义相当于:   char *(*p_p);   运行结果:   1 3 5 7   2 4 6 8   10 20 30 40   程序中指针p为一个可以存放整型量地址的变量,在程序的第 5 行将第0行第0列地址赋给它,实际上行地址也是某个整型量的地址,所以可以这样做。如果将注1行的a[0]改成a,是否可以呢? 不行! 虽然a和a[0]的值相同,但类型却不同,这样做是不合法的。那么是否可以将注2行的a[0]用a替换呢? 也不行! 因为指针的加减运算结果是受到类型影响的,不同类型之间的运算是无法进行的。   既然我们用整型指针来存放列地址,那么如何定义行指针来存放行地址呢? 下面就是行指针的定义方式。   类型名 (*指针名)[数组长度];   约束行指针类型的条件有两个,一是它所指向数组的类型; 一是每行的列数。下面用行指针来改写例8.13。   例 8.14 多维数组。   # include stdio.h   void main()   {    static int a[3][4]={{1,3,5,7},{2,4,6,8},{10,20,30,40}};   int i,j,(*p)[4];   p=a;   for(i=0;i3;i++)  {      for(j=0;j4;j++)      printf(%4d,*(*(p+i)+j));      printf(\n);  }   }   运行结果:   1 3 5 7   2 4 6 8   10 20 30 40  注意程序中的表达式*(*(p+i)+j)还可以表示成p[i][j]和(*(p+i))[j]。  使用多维数组时一定要注意类型问题,下面以二维数组为例来说明使用多维数组作函数参数时应注意的问题。   (1) 形参说明为指向数组元素的指针,实参为数组元素的地址或指向元素的指针。例如:  调用函数f(),用数组元素的地址作实参:  int a[2][3];  void f(int *,int);  f(a[0],2*3); a[0]是元素a[0][0]的地址,f(a[0],2*3)调用也可以写成f(a[0][0],2*3)。2*3是元素的个数。   调用函数f(),用指向数组元素的指针作实参:  int a[2][3],*pi;  void f(int *,int);  pi=a[0]; /* 或pi=a[0][0] */   f(pi,2*3); pi是指向元素 a[0][0]的指针。   函数f()的定义:  void f(int *pi,int size)  {   } 形参pi说明为列指针。   (2) 形参说明为行指针,实参为行地址或行指针。例如,   调用函数f(),用行指针作实参:    int a[2][3];    void f(int (*)[3],int);    f(a,2); 实参 a是行指针,类型为 int(*)[3]; 实参 2是二维数组 a的行数。   调用函数f(),用行指针作实参:   int a[2][3],(*pa)[3];  void

文档评论(0)

pehalf + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7201060146000004

1亿VIP精品文档

相关文档