程序设计基础.

Slides:



Advertisements
Similar presentations
等可能性事件的概率(二) 上虞春晖中学数学组欢迎你! 1 本课件制作于 §10.5 等可能事件 的概率 ( 二 )
Advertisements

南 通. 南通概述 南通,位于江苏省东部, 东抵黄海,南望长江。 “ 据江 海之会、扼南北之喉 ” ,隔江 与中国经济最发达的上海及 苏南地区相依,被誉为 “ 北上 海 ” 。 南通也是中国首批对 外开放的 14 个沿海城市之一 ,被称为 “ 中国近代第一城 ” 。 南通面临海外和内陆两大经 济辐射扇面,素有.
高等学校英语应用能力考试 考务培训 兰州文理学院教务处 2014 年 12 月. 考务培训 21 日请监考人员上午 8:00 (下午 2:30 )到综合楼 205 教室集合,查看 监考安排,由考务负责人进行考务 培训。
語言與文化通識報告 - 台日年菜差異 - 指導老師 : 葉蓁蓁 小組 : 日本微旅行 組員 :4a21b032 吳采玲 4a21b037 沈立揚 4a 洪雅芳 4a 陳楚貽 4a 王巧稜.
均衡推进,确保质量 08学年第一学期教学工作会议 广州市培正中学
第八章 土地行政管理.
黑木耳.
投資權證13問 交易所宣導資料(104) 1.以大盤指數為標的之權證,和大盤指數的連動性,為什麼比和期交所期指的連動性差?
如何把作文写具体.
「互联网金融2.0时代」与房地产的融合 广州互联网金融协会会长、广州e贷总裁 方颂.
企业会计学(三) 人大版本 吕 昌.
第一章 人口与环境 第一节 人口增长模式.
第一节 人口与人种 第一课时.
解读我党发展史 思索安惠美好明天 主讲人:王辰武.
第5课 长江和黄河.
妝點歌曲的神奇彩衣 part2 六年一班 設計與教學:陳映蓉.
小学科学中的化学 武威十九中 刘玉香.
銓敘部研究規劃自願退休公務人員月退休金起支年齡延後方案座談會
瓦罐湯 “瓦缸煨汤”是流行于南方民间的一种风味菜肴。它采用一种制特的大瓦缸,其缸底可以烧火,缸内置有铁架,厨师将装有汤的小瓦罐一层层地码入缸内的铁架上,然后点燃木炭,借用木炭火产生的高温将瓦罐内的汤煨熟。
神州五号、六号的发射和回收都取得了成功 ,圆了几代中国人的航天梦,让全中国人为之骄傲和自豪 神州五号、六号的发射和回收都取得了成功 ,圆了几代中国人的航天梦,让全中国人为之骄傲和自豪!但是你们知道我们的科学家是怎样迅速地找到返回舱着陆的位置的吗? 这全依赖于GPS——卫星全球定位系统”。大家一定觉得很神奇吧!学习了今天的内容,你就会明白其中的奥妙。
科學論文 鰂魚涌街的衛生情況 作者:廖梓芯 學校:北角官立上午小學 班級:P.5A.
機率的定義與性質 機率概念與應用網路學習研究.
據點考核與評鑑 報告人:臺南市政府 照顧服務管理中心.
特殊族群運動健康訓練(I).
依据教材 全国高等教育自学考试指定教材 《西方行政学说史》, 竺乾威主编,高等教育出版社。
正 信 讀 書 會 主 持 群 : 姚 永 錩 、 鄭 健 、 陳 淑 珍 佛法的生活應用 2008/07/23.
非法集资典型案例评析 南京师范大学法学院 蔡道通 2016年1月.
专题(二) 交往沟通 掌握技能 命 题 解 读 背 景 材 料 新 题 演 练 考 点 链 接 1.
姓名:劉芷瑄 班級:J201 座號:39號 ISBN:957-33-1963-2
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
松竹梅岁寒三友 步入建交 桃李杏村暖一家 迈进职教 活出精彩.
《成佛之道》序~第三章 圓融 /
第八单元第二课第一课时 严守法律 温州四中 蒋莉青.
高级财务会计.
默写基础知识: 1、家庭是由 关系、 关系或 关系而结合成的亲属生活组织。家里有 ,家中有 。
什么是颈椎病? 颈椎病是指颈椎间盘退行性变,及其继发性椎间关节退行性变所致脊髓、神经、血管损害而表现的相应症状和体征。
大气的受热过程 周南中学.
第一单元 中国传统文化主流思想的演变.
公務人員退休法、撫卹法 法制與實務講習 銓敘部退撫司 中華民國99年8月.
荆门市农业水价综合改革 工作情况汇报 湖北省荆门市水务局 二0一六年九月.
C语言基础——指针的高级应用 Week 05.
《傅雷家书》 学 科:语文 年 级:九年级 授课教师:王宁宁.
紧抓PPP项目为招标代理机构 带来的转型发展机遇
空間向量 朱泰吉 蔡宇翔 張力夫 莊孟霏.
第一節 行政裁量與不確定法律概念 第二節 行政裁量
本课设置5个环节 一、限时秒杀--5分钟 二、摩拳擦掌--9分钟 三、刀锋相见--20分钟 四、现炒现卖--5分钟 五、相约课后--1分钟.
从中国与联合国的关系演进 看联合国的产生与发展
第九章 指针 目录 指针与指针变量的概念 变量的指针和指向变量的指针变量 数组的指针和指向数组的指针变量
100學年度土木工程系專題研究成果展 題目: 指導老師:3223 專題學生:2132、2313 前言: 成果: 圖1 圖2 方法與流程:
目录 10.1 指针的基本概念 10.2 指向变量的指针变量 10.3 指向数组的指针变量 10.4 指向函数的指针变量和指针型函数
项目六 用指针优化学生成绩排名 项目要求 项目分析
第8章 善于利用指针 8.1 指针是什么 8.2 指针变量 8.3 通过指针引用数组 8.4 通过指针引用字符串 8.5 指向函数的指针
第五章 指针 5.1 指针的概念和定义 5.2 指针运算 5.3 指针和数组 5.4 字符串指针 5.5 指针数组 5.6 指向指针的指针
產品語意 班級:夜四技產設三甲 學生:鄭舜鴻 學號:9A01C023 指導教師:唐蔚.
第八章 使用指针.
第十章 指针.
C语言复习3----指针.
第六章 指针 C++程序设计中使用指针可以: 使程序简洁、紧凑、高效 有效地表示复杂的数据结构 动态分配内存 得到多于一个的函数返回值.
小学5.
第十章 指针 指针是C语言的重要概念,是C语言的特色,是C语言的精华。 10.1 地址和指针的概念 内存中的每一个字节都有一个地址。
第九章 指针.
C程序设计.
加減法文字題 國小低年級學生對加減法文字題的瞭解 小組成員 陳育娟 羅珠綾 侯宜孜
飛行器製作與飛行 講師:劉修建.
本节内容 指针类型.
因果性:一个形而上学的预设 赵敦华 2008年5月.
臺中市龍山國小 校園常見瓢蟲辨識   瓢蟲屬於鞘翅目瓢蟲科。目前世界上約有5000多種瓢蟲,台灣地區約有80種以上,其中能捕食有害生物的瓢蟲約七十種之多。瓢蟲因為捕食有害生物為主食,所以又稱為『活農藥』。
第九章 指针 C程序设计中使用指针可以: 使程序简洁、紧凑、高效 有效地表示复杂的数据结构 动态分配内存 得到多于一个的函数返回值.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Presentation transcript:

程序设计基础

第十章 指针 地址和指针的概念 变量的指针和指向变量的指针变量 小结 本章结束

10.1 地址指针的基本概念   为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。   在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。

10.1 地址指针的基本概念(续1) 严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。 既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址,也可以是其它数据结构的地址。

10.1 地址指针的基本概念 (续2) 在C语言中,一种数据类型或数据结构往往都占有一组连续的内存单元。 用“地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址,它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。 这也是引入“指针”概念的一个重要原因。

变量与地址 i k 程序中: int i; float k; 变量是对程序中数据 存储空间的抽象 返回主菜单 内存中每个字节有一个编号-----地址 …... 2000 2001 2002 2005 内存 2003 程序中: int i; float k; i k 编译或函数调用时为其分配内存单元 变量是对程序中数据 存储空间的抽象 返回主菜单

10.2 变量的指针和指向变量的指针变量 变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。

10.2.1 定义一个指针变量 对指针变量的定义包括三个内容: (1) 指针类型说明,即定义变量为一个指针变量; (2) 指针变量名; 10.2.1 定义一个指针变量 对指针变量的定义包括三个内容: (1)  指针类型说明,即定义变量为一个指针变量; (2)  指针变量名; (3)  变量值(指针)所指向的变量的数据类型。 其一般形式为: 类型说明符 *变量名; 其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

10.2.2 指针变量的引用 & 取地址运算符。 * 指针运算符(或称间接访问运算符)。 10.2.2 指针变量的引用 指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,否则将引起错误。两个有关的运算符: & 取地址运算符。 * 指针运算符(或称间接访问运算符)。 C语言中提供了地址运算符&来表示变量的地址。 其一般形式为: &变量名;

指针与指针变量: 指针是一个变量的地址;指针变量是专门存放变量地址的变量 …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 变量的内容 变量的地址 2000 指针变量 变量 变量地址(指针) 变量值 指向 地址存入 指针变量

&与*运算符:含义及图示 i_pointer &i &(*i_pointer) i *i_pointer *(&i) &含义: 取变量的地址 单目运算符 优先级: 2 结合性:自右向左 *含义: 取指针所指向变量的内容 单目运算符 优先级: 2 结合性:自右向左 2000 10 i_pointer *i_pointer &i_pointer i …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 指针变量 i_pointer &i &(*i_pointer) i *i_pointer *(&i) i_pointer = &i = &(*i_pointer) i = *i_pointer = *(&i) i_pointer-----指针变量,它的内容是地址量 *i_pointer----指针的目标变量,它的内容是数据 &i_pointer---指针变量占用内存的地址

间接访问:通过存放变量地址的变量去访问变量 直接访问与间接访问 直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 指针变量 …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 例 i=3; -----直接访问 20 3 例 *i_pointer=20; -----间接访问

例 k=i; --直接访问 k=*i_pointer; --间接访问 10 10 …... 整型变量i 2000 2001 整型变量k 指针变量 …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 整型变量k 10

为了表示指针变量和它所指向的变量之间的关系,在程序中用“. ”符号表示“指向”,例如,i_pointer代表指针变量,而 为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量。 下面两个语句作用相同: i=3; *i_pointer=3; 第二个语句的含义是将3赋给指针变量i_pointer所指向的变量。

10.2.2 指针变量的引用 设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: (1) 指针变量初始化的方法 10.2.2 指针变量的引用 设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: (1)  指针变量初始化的方法 int a; int *p=&a; (2)  赋值语句的方法 int *p; p=&a; 【例10.1】 【例10.2】

10.2.3 指针变量作为函数参数 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。 【例10.3】 【例10.4】 返回主菜单

例10.1 main() {int a,b; int*pointer_1, *pointer_2; a=100;b=10; pointer_2=&b; printf("%d,%d\n",a,b); printf("%d,%d\n",*pointer_1,*pointer_2); } 说明 输出: 100,10 运行程序

例10.1说明 1)在开头处虽然定义了两个指针变量pointer_1和pointer_2,担它们并未指向任何一个整型变量。只是提供两个指针变量,规定它们可以指向整型变量。程序第5、6行的作用就是使pointer_1指向a,pointer_2指向b。

例10.1说明(续) 2)最后一行的*pointer_1和*pointer_2就是变量a和b。最后两个printf函数作用是相同的。 4)程序第5、6行的“pointer_1=&a”和 “pointer_2=&b”不能写成“*pointer_1=&a”和 “*pointer_2=&b”。 请对下面再的关于“&”和“*”的问题进行考虑: 1 如果已经执行了“pointer_1=&a;”语句,则&*pointer_1是什么含义?   *&a含义是什么? (pointer_1)++和pointer_1++的区别? 说明结束

例10.2 main() {int a,b; int *p1,*p2,*p; scanf("%d,%d",&a,&b); p1=&a;p2=&b; if(a<b) {p=p1;p1=p2;p2=p;} printf("\na=%d,b=%d\n\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); } 输出: a=5,b=9 max=9,min=5 运行程序

例10.3 swap(int *p1,int *p2) {int temp; temp=*p1; *p1=*p2; 输出: } main() {int a,b; int*pointer_1,*pointer_2; scanf("%d,%d",&a,&b); pointer_1=&a;pointer_2=&b; if(a<b)swap(pointer_1,pointer_2); printf("\n%d,%d\n",a,b); 输出: 9,5 说明 运行程序

例10.3说明 1)swap是用户定义的函数,它的作用是交换两个变量(a和b)的值。swap函数的形参p1、p2是指针变量。程序运行时,先执行main函数,输入a和b的值。然后将a和b的地址分别赋给指针变量pointer_1和pointer_2,使pointer_1指向a,pointer_2指向b。

例10.3说明(续) 2)接着执行if语句,由于a〈b,因此执行swap函数。注意实参pointer_1和pointer_2是指针变量,在函数调用时,将实参变量的值传递给形参变量。采取的依然是“值传递”方式。因此虚实结合后形参p1的值为&a,p2的值为&b。这时p1和pointer_1指向变量a,p2和pointer_2指向变量b。

例10.3说明(续) 3)接着执行执行swap函数的函数体使*p1和*p2的值互换,也就是使a和b的值互换。

例10.3说明(续) 4)函数调用结束后,p1和p2不复存在(已释放) 5)最后在main函数中输出的a和b的值是已经过交换的值。 说明结束

10. 3有关指针的数据类型和指针运算的小结 1、地址和指针的概念 2、变量的指针和指向变量的指针变量 返回主菜单

The end 本章结束