《程序设计基础:C语言》6ppt.ppt_第1页
《程序设计基础:C语言》6ppt.ppt_第2页
《程序设计基础:C语言》6ppt.ppt_第3页
《程序设计基础:C语言》6ppt.ppt_第4页
《程序设计基础:C语言》6ppt.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础:C语言,2009/2010第二学期 C语言课程组,版权所有,复制注明出处,上一章知识复习,讲述算法的三种基本结构。 初步阐述了面向过程的程序设计。 讲述了逻辑运算符、逻辑表达式在选择结构、循环结构中的作用。 讲述了顺序结构、条件结构、循环结构及算法的流程图描述法。 讲述了C语言中if-else、switch、for、while、do-while、goto等语句的使用方法。 讲述多重循环的执行分析方法。,C语言的数据类型,数据类型介绍,版权所有,复制注明出处,数据类型,构造类型,指针类型,空类型(无值类型) void,常双精度实型 long double,本讲教学目标,掌握指针声明符、指针变量的声明方法。 理解指针变量的两个关键点: 存放地址 “捆绑”一块内存空间 理解单重及多重指针的赋值。 掌握通过指针访问所指内存空间中数据对象的方法。 理解const指针。 了解空指针及通用指针的作用。 了解指针变量的运算。,版权所有,复制注明出处,本讲教学目标,版权所有,复制注明出处,整型,指针,?,版权所有,复制注明出处,本章授课内容,指针变量的运算,几种特殊的指针变量,多重指针变量的声明及使用,指针变量的声明及使用,指针内容准备知识,版权所有,复制注明出处,本章授课内容,指针变量的运算,几种特殊的指针变量,多重指针变量的声明及使用,指针变量的声明及使用,指针内容准备知识,指针内容准备知识,版权所有,复制注明出处,int a = 3;,0x0012FF1C 内存地址,&a,(字面值),(标识符),指针内容准备知识,版权所有,复制注明出处,int a = 3;,&a,指针到底是什么呢?,地址就是指针,03,00,00,00,本讲教学目标,版权所有,复制注明出处,整型,指针,地址,4,?,指针内容准备知识,版权所有,复制注明出处,/*源文件:demo6_1.c*/ #include #include int main(void) int x = 33; double y = 3.45; printf(“数据对象33 占用的字节数:%dn“, sizeof(int); printf(“x 代表的数据对象为:%dn“, x); printf(“数据对象33 在内存中的存储首地址为:%Xn“, ,&x,&y是指针吗?,指针内容准备知识,版权所有,复制注明出处,注意: C语言中所有的变量都是要占据内存的,并且其占据内存大小是由变量类型所决定的. 所有的指针变量都占据相同大小的内存,在32位电脑上,指针变量占4个字节.,本讲教学目标,版权所有,复制注明出处,整型,地址,int x;,?,存取x变量的值,版权所有,复制注明出处,本章授课内容,指针变量的运算,几种特殊的指针变量,多重指针变量的声明及使用,指针变量的声明及使用,指针内容准备知识,指针变量的声明及定义,变量的声明语法: 声明说明符 初始化声明符列表;,版权所有,复制注明出处,有且只有一个,*,版权所有,复制注明出处,例6-2 分析下面的声明。 int * p1, x = 3; const char * p2; const int * const volatile p3, y = 5; float *p1, *p2; const long *p1, *p2; int *const p1 = ,指针变量的声明及定义,指针变量的声明语法: 指针变量是用来存地址的 类型说明符决定了指针存储的地址的类型 关于指针的两种基本操作: &变量:取出变量本身所在的内存首地址 *地址:*a变量地址a变量 修改存储的变量地址中的数据值(出现在等号左边) 取出存储的变量地址中的数据值,版权所有,复制注明出处,在变量前加*即可,声明说明符 初始化声明符列表;,int *p = ,指针变量的声明及定义,版权所有,复制注明出处,例6-2 分析下面的声明。 int * p1, x = 3; const char * p2; const int * const volatile p3, y = 5; float *p1, *p2; const long *p1, *p2; int *const p1 = ,指针变量的声明及定义,例6-3 设有int x=3;,请声明一个名为p的指针变量,p的值为数据对象3的存放地址 int *p=,版权所有,复制注明出处,指针变量的声明及定义,例6-4 设有double x=3.5;,请声明一个名为p的指针变量,p值为数据对象3.5的存放地址。请画出P、x的存储关系示意图。 例6-5 设有int x = 3; int *p = ,则表达式*p 的结果为3,请对此进行分析。,版权所有,复制注明出处,指针变量的声明及定义,例6-6 设int x = 3; int *p = ,请分析下述表达式的值:x、&x、p、&p、*p。,版权所有,复制注明出处,/*源文件:demo6_2.c*/ #include #include int main(void) int x = 3; int *p = ,指针变量赋值的问题,版权所有,复制注明出处,/*源文件:demo6_3.c*/ #include #include int main(void) int x = 0x89898; double* q = (double*) ,注意:当指针类型与赋值变量的类型不同时会发生内存溢出或者内存截断的问题.,x,*q,q,指针的声明和定义总结,版权所有,复制注明出处,注意: 1.指针变量也是变量. 2.指针变量p的值为变量a的地址,称p指向a. 3.指针变量p也是有类型的,这就决定了p所 ”绑定”的内存空间大小. 4.p是指针变量,*p就是p指向的变量,&p为p的地址. 5.当指针类型与赋值变量的类型不同时会发生内存溢出或者内存截断的问题.,版权所有,复制注明出处,本章授课内容,指针变量的运算,几种特殊的指针变量,多重指针变量的声明及使用,指针变量的声明及使用,指针内容准备知识,多重指针的声明及使用,多重指针: 指向指针的指针 二重指针变量: 声明说明符 * 类型限定符列表 * 类型限定符列表 三重指针变量: 声明说明符 * 类型限定符列表 * 类型限定符列表 * 类型限定符列表 多重指针 例6-8 请观察下面声明的二重及三重指针,分清声明中的各元素。 double *p; int *const * p; double *p; double *const * volatile *p;,版权所有,复制注明出处,多重指针的声明及使用,版权所有,复制注明出处,/*源文件:demo6_4.c*/ #include #include int main(void) int x = 3; int *p = ,多重指针的声明及使用,版权所有,复制注明出处,多重指针练一练,例6-10 根据下列语句画出存储示意图。 double f = 3.24; double *p1 = ,版权所有,复制注明出处,多重指针练一练,例6-11 根据上题,请写出以下表达式的等价表达式。 *p1 *p2 *p2 *p3 *p3 *p3 p1 p2 p3,版权所有,复制注明出处,多重指针的声明及使用,版权所有,复制注明出处,注意: 1.多重指针变量也是变量. 2.多重指针变量赋值过程中一定要注意类型. 3.多重指针中,变量的等价形式.,本讲教学目标,版权所有,复制注明出处,整型,地址,int x;,存取x变量的值,一重指针的定义 多重指针的定义,版权所有,复制注明出处,本章授课内容,指针变量的运算,几种特殊的指针变量,多重指针变量的声明及使用,指针变量的声明及使用,指针内容准备知识,特殊指针,const 指针 空指针 通用指针,版权所有,复制注明出处,const 指针,在指针声明符中,若使用了const关键字,该指针称为const指针。 一重变量的const指针 二重变量的const指针 多重变量的const指针 作用: 限定变量的可使用权限,版权所有,复制注明出处,一重const指针,const修饰一重指针变量,表明该指针变量的值初始化后不可改变。 例6-12 设有int x = 3; int y = 4; 请分析下面语句。 int *const p; int *const p = ,版权所有,复制注明出处,二重const指针,声明二重指针变量的形式: * 类型限定符列表 * 类型限定符列表 二重const指针的形式: const 出现在第一个“类型限定符列表”中,而不出现在第二个“类型限定符列表中”,int*const*p2 const 出现在第二个“类型限定符列表”中,而不出现在第一个“类型限定符列表中”,int*constp2 const 同时出现在两个“类型限定符列表”中,如:int *const *const p2 = ,,版权所有,复制注明出处,二重const指针,例6-13 设有int x = 3; int *p1 = ,请画出内存存储示意图,并分析const 对p 的作用。,版权所有,复制注明出处,二重const指针,例6-14 设有int x = 3; int *p1 = ,请画出内存存储示意图,并分析const 对p 的作用,版权所有,复制注明出处,二重const指针,例6-15 设有int x = 3; int *p1 = ,请画出内存存储示意图,并分析const 对p 的作用。,版权所有,复制注明出处,二重const指针总结,版权所有,复制注明出处,/*源文件:demo6_5.c*/ #include #include int main(void) int x = 3; int y = 4; int z = 5; int * px = ,二重const指针总结,版权所有,复制注明出处,注意: 1.const的位置不同意义不同 2.紧跟const后面的部分代表的值不可变,三(多)重const指针,const 对三重指针的作用同二重const指针,版权所有,复制注明出处,const指针总结,版权所有,复制注明出处,一重const指针注意: 1. const 仅出现在声明说明符中 2. const 出现在声明说明符及指针声明符中,const int *p = &x,const int *const p = &x,const指针总结,版权所有,复制注明出处,多重const指针注意: 1. const出现的位置不同意义不同. 2. const后面紧跟的变量的值不可改变. 3.大家应该尽量多的使用const.,const指针总结,版权所有,复制注明出处,空指针,常量叫做字面值,空指针字面值称为空指针常量 空指针字面值的形式: 值为0的整形表达式 (void *)整型表达式 一个值为空指针字面值的指针变量被称为空指针 例如: int *p = 0; double *p = NULL;,版权所有,复制注明出处,空指针注意: 若声明一个指针变量时,如果不指定它所指向的变量,则将空指针字面值赋给该指针.,整型表达式必须为0,空指针,版权所有,复制注明出处,/*源文件:demo6_6.c*/ #include #include int main(void) int *p = NULL; if(p) printf(“%dn“, *p); system(“PAUSE“); return 0; ,空指针注意: 建议使用if(p)的形式. 建议使用if(NULL = p)的形式.,/*源文件:demo6_6.c*/ #include #include int main(void) int *p = NULL; if(!p) return -1; else printf(“%dn“, *p); system(“PAUSE“); return 0; ,通用指针,声明指针变量时,如果声明说明符为 void,则该指针为通用指针。 注意: 对通用指针,不能使用*或下标运算符,也不能作为加减运算的操作数。 指向对象或不完整类型的任何指针都可以转换为void *类型,然后再转换为原类型,值保持不变。 例6-18 设有int x = 3; int *p = ,版权所有,复制注明出处,本讲教学目标,版权所有,复制注明出处,整型,地址,int x;,存取x变量的值,一重指针的定义 多重指针的定义 几种特殊指针的定义,+、-、*、/等,?,版权所有,复制注明出处,本章授课内容,指针变量的运算,几种特殊的指针变量,多重指针变量的声明及使用,指针变量的声明及使用,指针内容准备知识,指针变量的运算,指针的运算关系: 取指向地址的值(*) 取值地址(&) 指针的赋值(=) 指针的加减运算(+、-) 指针的关系运算(、=),版权所有,复制注明出处,指针的赋值运算,指针的赋值分为两种情况: 将变量地址赋给指针-指向变量 将指针赋给指针-与被赋值的指针指向同一个变量 例6-19 设有int x=3; int *p = 0; int *q = 0;,请观察下面的语句 p = ,版权所有,复制注明出处,指针的赋值运算,例6-20 设有int x=3; int y = 4; int *p1 = 0; int *p2 = 0;,观察下面的语句 p1 = ,版权所有,复制注明出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论