谭浩强C语言课件第6章.ppt

第6章 指针 6.1 指针的概念 6.2 变量与指针 6.3 数组与指针 6.4 字符串与指针 6.5 函数与指针 6.6 返回指针值的函数 6.7 指针数组和指向指针的指针 6.8 有关指针的数据类型和指针运算的小结 *6.9 引用 6.1 指针的概念 为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。 如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。例如,C++编译系统一般为整型变量分配4个字节,为单精度浮点型变量分配4个字节,为字符型变量分配1个字节。内存区的每一个字节有一个编号,这图6.1就是“地址”。 图6.1 请务必弄清楚一个内存单元的地址与内存单元的内容这两个概念的区别。在程序中一般是通过变量名来对内存单元进行存取操作的。其实程序经过编译以后已经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的。这种按变量地址存取变量值的方式称为直接存取方式,或直接访问方式。 还可以采用另一种称为间接存取(间接访问)的方式。可以在程序中定义这样一种特殊的变量,它是专门用来存放地址的。 图6.2是直接访问和间接访问的示意图。为了将数值3送到变量中,可以有两种方法: (1) 直接将数3送到整型变量i所标识的单元中。见图6.2(a)。 (2) 将3送到指针变量i_pointer所指向的单元(这就是变量i所标识的单元)中。见图6.2(b)。 图6.2 所谓指向,就是通过地址来体现的。 由于通过地址能找到所需的变量单元,因此可以说,地址指向该变量单元。因此将地址形象化地称为“指针”。一个变量的地址称为该变量的指针。 如果有一个变量是专门用来存放另一变量地址(即指针)的,则它称为指针变量。指针变量的值(即指针变量中存放的值)是地址(即指针)。 6.2 变量与指针 指针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是: 用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C++中用“*”符号表示指向,例如,i_pointer是一个指针变量,而*i_pointer表示i_pointer所指向的变量,见图6.3。 下面两个语句作用相同: ① i=3; ② *i_pointer=3; 图6.3 6.2.1 定义指针变量 C++规定所有变量在使用前必须先定义,即指定其类型。在编译时按变量类型分配存储空间。对指针变量必须将它定义为指针类型。先看一个具体例子: int i,j; //定义整型变量i,j int *pointer_1, *pointer_2; //定义指针变量*pointer_1,*pointer_2 第2行开头的int是指: 所定义的指针变量是指向整型数据的指针变量。也就是说,指针变量pointer_1和pointer_2只能用来指向整型数据(例如i和j),而不能指向浮点型变量a和b。这个int就是指针变量的基类型。指针变量的基类型用来指定该指针变量可以指向的变量的类型。 定义指针变量的一般形式为 基类型 *指针变量名; 下面都是合法的定义: float *pointer_3; // pointer_3是指向单精度型数据的指针变量 char *pointer_4; // pointer_4是指向字符型数据的指针变量 请注意: 指针变量名是pointer_3和pointer_4,而不是*pointer_3和*pointer_4,即“*”不是指针变量名的一部分,在定义变量时在变量名前加一个“*”表示该变量是指针变量。 那么,怎样使一个指针变量指向另一个变量呢?只需要把被指向的变量的地址赋给指针变量即可。例如: pointer_1=&i; //将变量i的地址存放到指针变量pointer_1中 pointer_2=&j; //将变量j的地址存放到指针变量pointer_2中 这样,pointer_1就指向了变量i,pointer_2就指向了变量j。见图6.4。 图6.4 一般的C++编译系统为每一个指针变量分配4个字节的存储单元,用来存放变量的地址。 在定义指针变量时要注意: (1) 不能用一个整数给一个指针变量赋初值。 (2) 在定义指针变量时必须指定基类型。 6.2.2 引用指针变量 有两个与指针变量有关的运算符: (1) &取地址运算符。 (2) *指针运算符(或称间接访问运算符)。 例如: &a为变量a的地址,*p

c语言第六章谭浩强ppt,谭浩强C语言课件第6章.ppt相关推荐

  1. android opengl ppt,Android开发和 与实践课件第12章利用OpenGL实现3D图形.ppt

    Android开发和 与实践课件第12章利用OpenGL实现3D图形.ppt half, -half, half, half, half, half, // 上面 -half, half, half, ...

  2. 谭浩强c语言第7章14题,谭浩强C语言课件第7章.ppt

    谭浩强C语言课件第7章.ppt 第7章 自定义数据类型 7.1 结构体类型 7.2 共用体 7.3 枚举类型 7.4 用typedef声明类型 C++提供了许多种基本的数据类型(如int.float. ...

  3. c语言程序设计第五版课后习题答案谭浩强第八章课后题

    c语言程序设计第五版课后习题答案谭浩强第八章课后题 输入三个字符串,按由大到小的顺序输出 要求用指针实现 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个属兑换.写三个函数:1.输入 ...

  4. 006-高级语言程序设计C 第六章,高级语言程序设计_C语言(第六章 数组.ppt

    <高级语言程序设计_C语言(第六章 数组.ppt>由会员分享,可在线阅读,更多相关<高级语言程序设计_C语言(第六章 数组.ppt(30页珍藏版)>请在人人文库网上搜索. 1. ...

  5. c语言第六章数组题库及详解答案,C语言第六章数组习题答案.doc

    C语言第六章数组习题答案 第六章 数组 习题答案 一.选择题 12345678910CDBDCDDBCC11121314151617181920DBBCDDCDBD212223242526272829 ...

  6. c语言单字符输入和输出函数分别为,c语言第六章字符数据

    <c语言第六章字符数据>由会员分享,可在线阅读,更多相关<c语言第六章字符数据(18页珍藏版)>请在人人文库网上搜索. 1.第6章字符数据,6.1字符常数,6.2字符变量,6. ...

  7. c语言第六章数组测试题,计算机二级C语言测试题

    <计算机二级C语言测试题>由会员分享,可在线阅读,更多相关<计算机二级C语言测试题(22页珍藏版)>请在人人文库网上搜索. 1.第一章)1. 以下关于算法的描述不正确的是 .A ...

  8. c语言实验7字符串,C语言实验六(第七章二维数组字符串数组)

    C语言实验六(第七章二维数组字符串数组) 第 1 页 共 7 页第七章二维数组.字符串数组题[书面作业] 以书面作业形式上交,2010 年 11 月 1 日课堂交三道题的源程序1. 编写一个主函数:用 ...

  9. 语言条件语序心得_考研分享 | 王远新语言学教程要点总结(第五章)

    点击上方蓝字,关注我吧作者|雨   轩编辑|武思文上次小编分享了王远新老师<语言学教程>的第四章:考研分享 | 王远新<语言学教程>要点总结(第四章),今天小编为大家带来的是第 ...

  10. 达摩院NLP团队斩获六项世界冠军背后,让AI没有难懂的语言

    2018年末,BERT横空出世,它采用自编码对句子进行表示,通过预测掩盖词和上下句之间的关系作为语言模型学习任务,使用更多的数据,更大的模型,在多个自然语言处理(NLP)任务中显著超越之前的结果.这一 ...

最新文章

  1. Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程
  2. JavaScript Document 对象
  3. 趋势畅想-搭载android系统的智能数码相机
  4. matlab中max和find函数详解
  5. OCM备考 一、Server config 之管理表空间
  6. ssh(Spring+Spring mvc+hibernate)——EmpDaoImpl.java
  7. linux共享文件系统sy,Linux使用Samba实现文件共享
  8. jQuery按钮隐藏与显示
  9. maven课程 项目管理利器-maven 3-9 maven依赖冲突 4星
  10. ue html乱码,UE UTF8 乱码
  11. 本机web开发环境的搭建--nginx篇
  12. java请求接口参数为json格式
  13. 你摸透英语的16种时态了嘛
  14. 计算机无线网怎么安装教程,wifi怎么安装,教您电脑如何安装wifi
  15. PowerQuery 相对路径解决方案
  16. android obb在哪,安卓手机如何打开.obb文件?
  17. python画玫瑰曲线_turtle画玫瑰花,表白必备
  18. Python-random.seed()的作用
  19. 当沙拉与火锅狭路相逢,长沙人的“肥胖焦虑“有何新解法?
  20. unity物体边缘发光shader_Shaderlab Notizen 15 Rim Shader(边缘发光)的两种实现形态

热门文章

  1. C++ 10 进制 转 16进制
  2. 使用ASP.NET WEB API构建基于REST风格的服务实战系列教程(一)——使用EF6构建数据库及模型...
  3. catalan数的应用
  4. 【C语言】19-static和extern关键字1-对函数的作用
  5. 计算机在机械设制造中的应用实例,三维设计软件和技术在机械设计中的应用
  6. ubuntu查看cuda和cudnn
  7. Qt QMenu圆角阴影超详细 干净圆角 屏蔽原生阴影 绘制阴影
  8. Qt 窗口置顶 | 和取消置顶
  9. JAVA回文数代码getReverse_java判断回文数示例分享
  10. Altium Designer 15 PCB图层详解