软件研究室培训.pptxVIP

  • 0
  • 0
  • 约4.92千字
  • 约 40页
  • 2021-09-27 发布于河北
  • 举报
C语言;主要内容;(1)多动手 学习编程唯一方法是编写调试程序。看再多的书,效果也比不上设计调试一个简单程序。 (2)养成良好的编程习惯 养成好习惯很难。所以良好的编程习惯要从一开始培养。 (3)注意细节 不应漏过任何一个技术细节。只有细节的日积月累,才能有技术上的提高。 (4)了解开发环境 在学习编程语言的同时,也需要了解编程语言的开发、使用环境。如硬件平台(51、MSP430、PC)、操作系统(uCOS、Linux、DOS)、集成开发环境(Keil C,Borland C)等。 (5)多看书、勤思考 很多国外的经典书籍是由拥有几十年经验的质深程序员编写的。这些书里最重要的是融入了作者多年的编程经验。多看书,再结合自身平时的积累,不断思考总结是提高编程技术最有效的办法。;第二章 指 针;2.1.3 指针的三个要素 指针指向的地址(指针的内容); 指针指向的地址上的内容; 指针本身的地址。 例 3: int A, *pA, **ppA; pA = A; ppA = pA; 在复杂的指针都可以通过下表来分析: ppA ppA *ppA **ppA pA pA *pA A A;第二章 指 针;第二章 指 针; 但数组不同于指针: 数组名 a是指向数组起始位置的“常量”。 因此,不能对数组名进行赋值操作。 例 5: int a[4], *p; p = a; //正确 a = p; //错误 p++; //正确 a++; //错误 ;第二章 指 针;(2).通用指针 通用指针可以指向任何类型的变量。通用指针的类型用(void *)表示,因此也称为void 指针。 下面的第三行定义了两个通用指针: int n, *p; double *q; void *gp1, *gp2; 可以直接把任何变量的地址赋给通用指针。 例如,有了上面定义,下面赋值是合法的: gp1 = (void *) n; 可以把通用指针的值赋给普通的指针。如果被赋值指针与通用指针所指变量的类型不符,需要写强制转换: p = (int *)gp1;;第二章 指 针;2.4.2 函数指针的使用 例6 :假定有下面的函数声明 int ptr;  int fn(int);  int (*fp)(int);  指出下面的语句是否合法?,为什么?。  fp = fn; //正确,将函数fn的地址赋给fp  fp = fn(5); //错误,返回给fp的结果不是一个函数地址。  fp = ptr; // 错误,ptr的地址不在程序代码区,两种数据类型不能转换。 从上面的例子可以看出: (1) 不能将普通变量的地址赋给函数指针; (2) 不能将函数的调用赋给函数指针 (3) 可以将函数名赋给一个函数指针;第二章 指 针;2.4.3 函数指针数组 例7 :在一个计算器的例子中,有如下一些语句: ??switch(oper){ ??case?ADD: ??????????result=add(op1,op2);???break; ??case?SUB: ??????????result=sub(op1,op2); ?break; ... }? 对于一个复杂的计算器,switch语句将非常长。我们可以用函数指针数组来完成。? ??double?add(double,double); ??double?sub(double,double); ??... ??double?(*oper_func[])(double,double)={add,sub,...}; 第2个步骤是用下面语句替换前面整条switch语句: ??result=oper_func[oper

文档评论(0)

1亿VIP精品文档

相关文档