C语言程序设计(第6章).ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计(第6章).ppt

莆田学院计算机教研室 2003年5月 第六章 指针 计算机基础教研室 本章主要内容 指针概述 地址· 指针· 指针变量 多重指针 指针变量作为函数参数 指针与数组 数组、指针与函数调用 行指针 指针数组 带参数的主函数 指针与函数 指向函数的指针变量 返回指针值的函数 教学目的与要求 了解指针与地址的概念 了解指针与函数的概念 掌握指针变量的定义、初始化及指针的运算 掌握指针与数组、指针数组、二级指针等知识 掌握指针作为函数参数的应用 重点与难点 指针与地址的概念 指针与变量的关系 指针与数组 指针与字符串 指针数组与二级指针 指针的应用 一、指针概述 1.地址(address) P201 如果在程序中定义了一个“实体”(变量、数组、函数 ……),编译时系统就要给这些实体分配内存单元。 分配规则: 什么是内存单元“地址”? 内存单元是以字节为单位,每个字节都有一个编号(即“地址”)。如果将内存比作一个旅馆,内存单元就好比“床位”,而实体则好比“旅客”。这些“旅客”(实体)中,有单人型(char)、夫妇型(int)、家庭型(float,long,double等),还有团体型(数组等)。每个“实体”占用的内存单元是不同的。如: char a;int b;float c;int d[3];int max( ) 内存单元与地址 如何表示实体地址? 实体地址表示法1:直接访问(实体名) 普通变量a,b,c —— a,b,c 数组d[3] —— d(数组名), d[0],d[1],d[2] 对二维数组,可用单下标法表示每行首地址。 如 对char x[3][4],可用x[0]、x[1]、x[2]分别表示其第 一、二、三行的首地址。 函数max( ) —— max(函数名) “入口地址” 取地址运算符(适用于普通变量或数组元素) 实体地址表示法2:间接访问(指针) 适合于地址运算(加减等) 2.指针(pointer) 实体地址的一种表示法(便于编程处理)。 指针是一种特殊的数据类型——存放的是某个实体的地址值。 3.指针变量 P202 存放“指针”(地址值)的特殊变量。 定义方法: 类型标识符 *变量名 如 int *a; char *b; float *c; 为什么要使用指针变量? C程序中访问(读写)变量有两种方式: 直接访问 (按名单预留的座位入座) 利用实体名访问变量。访问变量的过程—— 变量(实体)名→定义时分配的地址→变量值 好比“先坐再买票”看电影:来一个观众,分配一个空位给他去坐,并且还要在纸上记一个某人坐在哪里。这种方式对用户来说很方便(“直接就座”),但对系统来说,“找某人”就极不方便(间接:查名字→座号)。 间接访问 (先买票,后按号入座) 把变量地址先存放在“指针”中,再通过“指针”访问变量。 好比先买票(票—指针,座号—地址),再“按号入座”看电影。这种方式对用户来说属于“间接就座”,便对系统查找来说就很直接,且便于处理。尤其对于数组(团体),可通过指针简单自加或自减,对整个数组进行处理。 指针变量——不要谈”指”色变 指针是C语言学习中的一大难点。 难——难在概念。 首先——搞定*p 请看以下变量声明语句 int a,*p1; char b,*p2; a,b 普通变量(存放某个数值或字符) p1,p2 指针变量(存放某个实体的地址) 注意——不同的*p 以下程序中哪些语句是错误的? main() { int a,*p; a=3; p=3; /*或者 p=a;*/ p=a; *p=a; /*或者*p=3*/ } 有关*p的小结 变量声明时,*p表示定义了一个用来存放变量地址而非数据(数值、字符等)的指针变量。 程序中引用时,*p表示取指针变量p所指变量的值。 *p——并非就这么简单 *p的含义与p所指的对象有关 如果p被定义成指向普通变量的指针变量,则*p代表该变量的值。 如 int *p,a=5; p=a; 则*p代表变量a的值(5)。 如果p被定义成指向某个数组的指针变量,则*p代表该数组中某个元素的值。 如 int *p, a[3]={1,2,3}; p=a; 则*p代表

文档评论(0)

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

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

1亿VIP精品文档

相关文档