LOGO
首页 小说列表 排行榜 搜索

    C语言教程-第34页

  • 第1页
  • 上一页
  • 下一页

    温馨提醒:系统正在全面升级。您可以访问最新站点。谢谢!

        下述程序中首先定义说明了指针数组ps并作了初始化赋值。 又说明了pps是一个指向指针的指针变量。在5次循环中, pps 分别取得了ps[0],ps[1],ps[2],ps[3],ps[4]的地址值(如图6.10所示)。再通过这些地址即可找到该字符串。

      main(){

      static char *ps[]={ "BASIC","DBASE","C","FORTRAN",

      "PASCAL"};

      char **pps;

      int i;

      for(i=0;i<5;i++){

      pps=ps+i;

      printf("%s\n",*pps);

      }

      }

      本程序是用指向指针的指针变量编程,输出多个字符串。

      本章小结

      1. 指针是C语言中一个重要的组成部分,使用指针编程有以下优点:

      (1)提高程序的编译效率和执行速度。

      (2)通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯。

      (3)可以实现动态的存储分配。

      (4)便于表示各种数据结构,编写高质量的程序。

      2. 指针的运算

      (1)取地址运算符&:求变量的地址

      (2)取内容运算符*:表示指针所指的变量

      (3)赋值运算

      ·把变量地址赋予指针变量

      ·同类型指针变量相互赋值

      ·把数组,字符串的首地址赋予指针变量

      ·把函数入口地址赋予指针变量

      (4)加减运算

      对指向数组,字符串的指针变量可以进行加减运算,如p+n,p-n,p++,p--等。对指向同一数组的两个指针变量可以相减。对指向其它类型的指针变量作加减运算是无意义的。

      (5)关系运算

      指向同一数组的两个指针变量之间可以进行大于、小于、 等于比较运算。指针可与0比较,p==0表示p为空指针。

      3. 与指针有关的各种说明和意义见下表。

      int *p;     p为指向整型量的指针变量

      int *p[n];   p为指针数组,由n个指向整型量的指针元素组成。

      int (*p)[n];  p为指向整型二维数组的指针变量,二维数组的列数为n

      int *p()    p为返回指针值的函数,该指针指向整型量

      int (*p)()   p为指向函数的指针,该函数返回整型量

      int **p     p为一个指向另一指针的指针变量,该指针指向一个整型量。

      4. 有关指针的说明很多是由指针,数组,函数说明组合而成的。

      但并不是可以任意组合,例如数组不能由函数组成,即数组元素不能是一个函数;函数也不能返回一个数组或返回另一个函数。例如

      int a[5]();就是错误的。

      5. 关于括号

      在解释组合说明符时, 标识符右边的方括号和圆括号优先于标识符左边的“*”号,而方括号和圆括号以相同的优先级从左到右结合。但可以用圆括号改变约定的结合顺序。

      6. 阅读组合说明符的规则是“从里向外”。

      从标识符开始,先看它右边有无方括号或园括号,如有则先作出解释,再看左边有无*号。 如果在任何时候遇到了闭括号,则在继续之前必须用相同的规则处理括号内的内容。例如:

      int*(*(*a)())[10]

      ↑ ↑↑↑↑↑↑

      7 6 4 2 1 3 5

      上面给出了由内向外的阅读顺序,下面来解释它:

      (1)标识符a被说明为;

      (2)一个指针变量,它指向;

      (3)一个函数,它返回;

      (4)一个指针,该指针指向;

      (5)一个有10个元素的数组,其类型为;

      (6)指针型,它指向;

      (7)int型数据。

      因此a是一个函数指针变量,该函数返回的一个指针值又指向一个指针数组,该指针数组的元素指向整型量。

      资料收集:beck Copyright 2002 www.vcok.com, All Rights Reserved

        .:.:第七章:结构与联合:.:.

      第七章:结构与联合

      结构类型定义和结构变量说明

        在实际问题中,一组数据往往具有不同的数据类型。例如, 在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另一种构造数据类型——“结构”。 它相当于其它高级语言中的记录。

        “结构”是一种构造类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构既是一种“构造”而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。

      一、结构的定义

      定义一个结构的一般形式为:

      struct 结构名

      {

      成员表列

      };

      成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:

      类型说明符 成员名;

      成员名的命名应符合标识符的书写规定。例如:

      struct stu

      {

      int num;

      char name[20];

      char sex;

      float score;

      };

        在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。 应注意在括号后的分号是不可少的。结构定义之后,即可进行变量说明。 凡说明为结构stu的变量都由上述4个成员组成。由此可见, 结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的【创建和谐家园】。

      二、结构类型变量的说明

      说明结构变量有以下三种方法。以上面定义的stu为例来加以说明。

      1. 先定义结构,再说明结构变量。如:

      struct stu

      {

      int num;

      char name[20];

      char sex;

      float score;

      };

      struct stu boy1,boy2;

      说明了两个变量boy1和boy2为stu结构类型。也可以用宏定义使一个符号常量来表示一个结构类型,例如:

      #define STU struct stu

      STU

      {

      int num;

      char name[20];

      char sex;

      float score;

      };

      STU boy1,boy2;

      2. 在定义结构类型的同时说明结构变量。例如:

  • 第1页
  • 上一页
  • 下一页