第5章 指 针 教学目标: 掌握指针定义、初始化方法和基本运算; 掌握利用指针访问一维数组、二维数组的方法;

Slides:



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

機械製造 II 第 11 章 特殊加工 Ch11 特殊加工 塑膠加工 電積成型 金屬塗層 特殊切削加工.
C++语言程序设计教程 第5章 构造数据类型 第6章 C++程序的结构.
妝點歌曲的神奇彩衣 part2 六年一班 設計與教學:陳映蓉.
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
科學論文 鰂魚涌街的衛生情況 作者:廖梓芯 學校:北角官立上午小學 班級:P.5A.
手太阳小肠经.
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
游泳四式技術分析暨初級教法.
《成佛之道》序~第三章 圓融 /
程序设计实习 3月份练习解答
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
正确保养皮肤的原则 皮肤的保养要依肤质进行 皮肤保养要分区进行 根据季节变化适时调整保养计划 依据年龄进行皮肤保养 肌肤保养还要分时进行
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
大气的受热过程 周南中学.
计算机硕士专业基础—C语言 赵海英
第七章 固定资产 第一节 固定资产概述 第二节 固定资产的确认和初始计量 第三节 固定资产的后续计量 第四节 固定资产清查与期末计价
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
时政发布 制作:宋虹雷.
第七章 证券投资.
申 论.
C语言基础——指针的高级应用 Week 05.
高级语言程序设计 C++程序设计教程(下) 2006年春季学期 与一些教材的区别 偏重理论,不去讨论某个系统的具体使用方法,但会涉及实现技术
VC++系统开发 第二章 C++语言基础 河北经贸大学信息技术学院.
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
第六讲 指针与字符串 —— 为什么指针 —— 持久动态内存分配 —— 字符串(字符数组).
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
資料大樓 --談指標與陣列 綠園.
C++程序设计 第二讲 清华大学软件学院.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
第三章 C++中的C 面向对象程序设计(C++).
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
程式撰寫流程.
第一章 C++编程简介 丘志杰 电子科技大学 计算机学院 软件学院.
6.4.1指针与二维数组 1、二维数组结构的分析 设有数组定义为:int a[3][4]; 则有: a表示数组在内存中的首地址。
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
C++语言程序设计 第二章 C++简单程序设计.
第九章 C++的I/O流库 9.1 流 9.2 磁盘文件 9.3 程序举例.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
C Programming in Action
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
第六章 指针、引用和动态空间管理 6.1 指针的概念 指针的概念 指针变量的定义和初始化
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第2章 C++流程控制语句 if 语句 switch语句 for语句 while语句 do - while语句 break语句
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++大学基础教程 第5章 数组 北京科技大学 信息基础科学系.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
第三章 链表 单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵.
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
C++语言程序设计 第六章 数组 指针与字符串.
程式結構&語法.
C语言复习3----指针.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
第10讲 构造函数和析构函数 构造函数 析构函数 This 指针.
第六章 指针 C++程序设计中使用指针可以: 使程序简洁、紧凑、高效 有效地表示复杂的数据结构 动态分配内存 得到多于一个的函数返回值.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
第二章 语言设计问题.
第二章 类型、对象、运算符和表达式.
第二讲 基本数据类 型及数组等 此为封面页,需列出课程编码、课程名称和课程开发室名称。
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
挑戰C++程式語言 ──第9章 函數.
第七章  数 组.
C++语言程序设计 第十章 C++标准模板库 成都信息工程学院计算机系.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
Presentation transcript:

第5章 指 针 教学目标: 掌握指针定义、初始化方法和基本运算; 掌握利用指针访问一维数组、二维数组的方法; 第5章 指 针 教学目标: 掌握指针定义、初始化方法和基本运算; 掌握利用指针访问一维数组、二维数组的方法; 掌握内存的动态分配、释放方法,并实现对动态数组的访问; 理解指针与字符串之间的关系,能用指针操作字符串。 2011.10

第5章 指 针 5.1 问题引出 5.2 指针变量的定义及使用 5.3指针与数组 5.4指针与字符串 2011.10

5.1 问题引出 问题:&a[i], a的含义? 结论:地址 &a[i] a为数组的首地址 a[i]为元素 回顾 例4.1 定义一个一维数组,实现元素的基本输入、输出。 #include <iostream.h> const int Maxsize=100; void main( ){ int i,n=5; int a[Maxsize]; //input for(i=0;i<n;i++) cin>>a[i]; //display cout<<n<<" numbers: "; for (i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; } 问题:&a[i], a的含义? 结论:地址 &a[i] a为数组的首地址 a[i]为元素 2011.10

5.2 指针变量 例题 (1) double f; f=9.6; (2) double * p; (3) p=&f; 指针变量的定义 格式: 基类型 * 指针变量名; 例题 (1) double f; f=9.6; (2) double * p; (3) p=&f; (1) 定义实型变量f,系统为其分配能够存储一个实数所占的内存空间 (2) 定义指向实型数据的指针变量, 即系统为变量p分配存储空间,用来存储某一实数所占内存空间的地址 (3) 变量f的地址赋值给变量p。 一般称变量p指向f,即将一个通过 变量f申请的内容地址赋值给p。 2011.10

5.2 指针变量 例题 (1) double f; (2) double * p; (3) p=&f; 图示 结论 f值的访问:f或*p 2011.10

5.2 指针变量 例题 int i=5,j=7; double f=9.6; double *p=&f; 2011.10

5.2 指针变量 二级指针(指向指针的指针变量) (1)定义指向指针的指针变量的方式 类型 ** 指针变量名 举例: 类型 ** 指针变量名 举例: double a=10.0, *p1=&a; double **p2; p2=&p1; 结论:(1) 值访问:a,*p1,**p2 (2)地址访问: *p2,p1,&a 2011.10

s 5.3 指针与数组 利用指针变量实现对一维数组的访问 例: int s[Maxsize]; 元素访问:s[i], *(s+i) int *p=s; p++; 2011.10

5.3 指针与数组 利用指针变量实现对一维数组的访问 #include <iostream.h> const int Maxsize=100; void main(){ int *p,*max,s[Maxsize]; int n=10; cout<<"Enter "<<n<<" numbers:\n"; for(p=s;p<s+n;p++) cin>>*p; for(p=s;p<s+n;p++) cout<<*p<<" "; max=s; if(*max<*p) max=p; cout<<"\nThe maximum number: "<<*max<<endl; } 2011.10

5.3 指针与数组 利用指针变量实现对二维数组的访问 若有int a[3][4]; 则 元素值的访问方式:a[i][j], *(a[i]+j),*(*(a+i)+j) 元素地址的访问方式:&a[i][j], (a[i]+j),*(a+i)+j 2011.10

5.3 指针与数组 利用指针变量实现对二维数组的访问 //二维数组输入、输出(含地址输出) #include<iostream.h> void main(){ int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}, i, j; cout<<"a[i][j] address value\n"; cout<<"---------------------------\n"; for(i=0; i<3; i++) for(j=0; j<4; j++) cout<<"a["<<i<<"]["<<j<<"] " <<&a[i][j]<<" "<<a[i][j]<<endl; } 2011.10

5.3 指针与数组 利用指针变量实现对二维数组的访问 //二维数组输入、输出(含地址输出) #include<iostream.h> void main(){ int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}, i, j; int *p=*a; cout<<"a[i][j] address value\n"; cout<<"---------------------------\n"; for(i=0; i<3; i++) for(j=0; j<4; j++){ cout<<"a["<<i<<"]["<<j<<"] "<<p<<" "<<*p<<endl; p++; } 2011.10

5.3 指针与数组 利用指针变量实现对二维数组的访问 #include<iostream.h> void main(){ int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}, i, j; int *p1; //定义列指针变量 int (*p2)[4]; //定义行指针变量 p1=&a[0][0]; //用列指针给列指针变量赋初值 cout<<"Method one:\n"; for(i=0; i<3; i++){ for(j=0; j<4; j++) cout<<*p1++<<"\t"; //用列指针访问数组元素 cout<<endl; } p2=a; //用行指针给行指针变量赋初值 cout<<"Method two:\n"; cout<<*(*(p2+i)+j)<<"\t";//用行指针访问数组元素 2011.10

5.3 指针与数组 利用行指针、列指针实现对二维数组元素的访问 #include<iostream.h> void main(){ int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}, i, j; int *p1; //定义列指针变量 int (*p2)[4]; //定义行指针变量 cout<<"Method three:\n"; p2=a; //此语句可以删除; for(i=0; i<3; i++) { for(j=0; j<4; j++) cout<<*(*p2+j)<<"\t"; //用行指针访问数组元素 p2++; //强调行指针做自增运算时是如何操作的 cout<<"\n"; } cout<<"Method four:\n"; p2=a; //此语句不可以删除; for(i=0; i<3; i++){ cout<<p2[0][j]<<"\t"; //用行指针访问数组元素 2011.10

5.4 动态数组与动态内存分配 动态内存分配 例题:动态分配存储n个数据的数组,并实现数据的输入、输出。 #include <iostream.h> void main(){ int i,n; int *s; cout<<"Enter the count:\n"; cin>>n; s=new int[n]; cout<<"Input "<<n<<" data:\n"; for(i=0;i<n;i++) cin>>s[i]; cout<<s[i]<<"\t"; cout<<endl; delete [ ]s; } 2011.10

5.4 动态数组与动态内存分配 例题:动态分配存储n个数据的数组,并实现数据的输入、输出。 #include <iostream.h> void main(){ int i,n; int *s; cout<<"Enter the count:\n"; cin>>n; s=new int[n]; //为s申请内存 cout<<"Input "<<n<<" data:\n"; for(i=0;i<n;i++) cin>>s[i]; //输入 cout<<s[i]<<“\t”; //输出 cout<<endl; delete [ ]s; //释放s所指内存 } 2011.10