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

c 语言课件.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 指针 教学目的 掌握指针、指针变量的概念 理解指针基本运算 掌握指针和变量之间的关系 掌握数组和指针的关系 掌握函数和指针的关系 教学内容: 指针的概念 指针与变量 指针与数组 指针与字符串 指针与函数 指向指针的指针 命令行参数 指针综合应用举例 7.1 指针的概念 计算机的内存储器被划分为一个个的内存单元,存储单元按一定的规则编号,这个编号就是存储单元的地址。在高级语言程序设计中,内存地址我们称之为指针。在C语言中有专门用来存放内存单元地址的数据类型,称为指针类型。 指针是C语言中一个重要的概念,也是C语言的精华部分,它提供了一种较为直观的地址操作手段。正确使用指针,可以有效的描述复杂的数据结构,书写出简洁,高效的程序。 7.1.1 地址与指针 7.1.2 指针变量 在高级语言程序设计中,内存地址称之为指针,在C语言中 有 专门用来存放内存单元地址的数据类型,称为指针类型;具有指针类型的变量称为指针变量,指针变量是用于存放内存 单元地址的;在不会引起混淆的情况下,也将指针变量简称为指针。 7.1.3 指针运算 1. 与指针相关的运算符--”*”和”” 2. 指针的赋值运算 指针变量也必须先赋值后使用,指针变量只能被赋相应类型的地址,而不能赋其他数据,可分为: 初始化赋值: 数据类型 * 指针变量名 = 初始地址 使用赋值语句赋值: 指针变量名 = 地址 给指针变量赋空值: 指针变量名 = NULL 或 0 或 ‘\0’ 3. 指针的算术运算 加减运算: 一个指针可以加、减一个整数n,但其结果 与指针所指对象的数据类型有关,即:结果中指针变量的值应增加或减少“n×sizeof(指针类型)”个单位值 并且,指针的加减运算常用于数组的处理,对指向一般数据的指针,加减运算无实际意义。 例: int a[10],*p=a,*x;  x=p+3; /*实际上是p加上3*2个字节赋给x, 使得x指向数组的第四个分量*/ 即:对于不同基类型的指针,指针变量“加上”或“减去”一个整数n所移动的字节数是不同的。 又例:float a[10], *p=a, *x;  x=p+3; /*实际上是p加上3*4个字节赋给x, x将指向数组的第四个分量*/ (2) 自增自减运算 指针变量自增、自减运算具有上述基本加减运算的特点,但有前置后置、先用后用的考虑,需要小心。 例如: int a[10], *p=a, *x; x=p++; /* x第一个元素分量p 指向第二个元素*/ x=++p; /* x、 p均指向数组的第二个分量*/ 4. 指针的关系运算 指针变量的关系运算指的是相同类型数据的指针之间进行的关系运算,在关系表达式中允许对两个指针进行所有的关系运算,如果两个相同类型的指针相等,就表示这两个指针指向同一个地址。 指针的关系运算在指向数组的指针中广泛的运用,假设 p、q是指向同一数组的两个指针,执行p>q的运算,其含义为:若表达式结果为真(非0值),则说明p所指向元素在q所指向元素之后,或者说q所指元素离数组第一个元素更近些。 注意:在指针进行关系运算之前,指针必须指向确定的变量或存储区域,即指针有初始值;另外,只有相同类型的指针才能进行比较。 7.2 指针与变量 在定义一个指针变量以后,就可以用该指针变量指向一个已 经存在的变量,通过它来对该内存存放的数据进行读写。 通过指针变量给所指向的变量赋值。 改变指针变量的指向来访问不同的变量。 通过指针变量来改写所指向的变量的值。 7.3 指针与数组 指针加减运算的特点使得指针特别适合处理数组及其元素 7.3.1 指针与一维数组 如对于下面两个定义: int *p ; 与 int q[10]; 数组名是指针(地址)常量 当执行 p=q; 后 p+i 是q[i]的地址 数组元素的表示方法:下标法和指针法, 即若 p=q, 则 p[i] ? q[i] ? *(p+i) ? *(q+i) 形参数组实质上是指针变量,即int q[ ] ? int *q 在定义指针变量(不是形参)时,不能把int *p 写成int p[ ]; 系统只给 p 分配能保存一个指针值的内存区(一般2字节);而给 q 分配2*10字节的内存区。 例如: int array[10] = { 1,2,3,4,5,6,7,8,9,10 }, *p; 当p=array;时,就使得p指向了array数组的第一个元素 则通常访问数组元素有三

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档