C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.

Slides:



Advertisements
Similar presentations
C++语言程序设计教程 第5章 构造数据类型 第6章 C++程序的结构.
Advertisements

第 2 章 初探 C++.
2016中重卡网络规划 中重卡营销部 2016年6月.
第8章 指针 ● 8.1 指针简介 ● 8.2 指针变量的操作 ● 8.3 数组与指针 ● 8.4 二维数组与指针 ●本章小结 ●本章练习.
课程概况 加入班级QQ群,便于及时沟通和资料共享。 课程教学的组成:
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
第八章 类和对象.
C++程序设计 王希 图书馆三楼办公室.
C++的檔案處理 綠園.
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
struct 可以在同一個名稱下擁有多種資料型態。使用struct能讓資料的存取和處理更為靈活。
資料大樓 --談指標與陣列 綠園.
内容提要 对象的生命周期 构造函数 析构函数 拷贝构造函数. 常宝宝 北京大学计算机科学与技术系
函數(一) 自訂函數、遞迴函數 綠園.
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第一章 程序的基本结构. 第一章 程序的基本结构 教材及授课结构 本章目标 基本内容 扩展阅读 上机指导 应用举例 习题.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
Object-Oriented Programming in C++ 第一章 C++的初步知识
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
计算机网络讲义 第5章 批量数据处理—数组 一维数组 排序和查找 二维数组 字符串.
第五章 指针 5.1 指针的概念和定义 5.2 指针运算 5.3 指针和数组 5.4 字符串指针 5.5 指针数组 5.6 指向指针的指针
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
C++程序设计 string(字符串类) vector(容器类).
C++语言程序设计 第二章 C++简单程序设计.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
谭浩强 编著 中国高等院校计算机基础教育课程体系规划教材 C++程序设计.
C++语言程序设计 第十一章 流类库与输入/输出.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
C++大学基础教程 第5章 数组 北京科技大学 信息基础科学系.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
六、函数 教学目标: 函数的概念、定义、调用和返回 带自定义函数的程序设计 递推算法 递归思想及算法实现 函数的参数传递方式 C语言程序设计.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
Name1..hour //加班時數 name2..hour //請假時數
第二章 基本数据类型及运算 C数据类型概述 基本数据类型 运算符和表达式 混合运算与类型转换 数据的输入输出 顺序程序设计举例.
Chapter 2 & Chapter 3.
C++语言程序设计 C++语言程序设计 第五章 函数 第十一组 C++语言程序设计.
C语言复习3----指针.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
第10讲 构造函数和析构函数 构造函数 析构函数 This 指针.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
物件導向程式設計 CH2.
C++的檔案處理 綠園.
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++程式設計入門 變數與運算子 作者:黃建庭.
C++大学基础教程 第10章 运算符重载 北京科技大学 2019/5/7 北京科技大学.
第二章 类型、对象、运算符和表达式.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
挑戰C++程式語言 ──第9章 函數.
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C++语言程序设计 第十章 C++标准模板库 成都信息工程学院计算机系.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
C++程序设计 概述 潘荣江 山东大学软件学院.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
變數與資料型態  綠園.
資料!你家住哪裏? --談指標 綠園.
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计

“ 目录 C++语言程序设计 基本知识 编程技能 刨根问底 指针与函数 指针与字符串 指针 void类型指针 指针与数组 动态内存 指针与结构体 指针 动态内存 引用 void类型指针 内存泄漏与悬挂指针 C++语言程序设计

基本知识 a C++语言程序设计

6.1 指针 关于变量(复习) 定义变量 变量的类型:指定了数据的表示和处理方法 变量的地址:内存单元的地址,指出变量在内存中的位置 例如:char ch1=‘Y’; 变量的类型:指定了数据的表示和处理方法 变量的地址:内存单元的地址,指出变量在内存中的位置 变量的值:内存单元的内容 变量名:内存单元的名字 使用变量名可以直接存取变量的值——直接访问 例如:ch1=‘A’; cout<<ch1<<endl; C++语言程序设计

6.1 指针 指针变量(简称为指针,Pointer) 用来存放其它变量的地址或者是内存单元的地址的变量 访问指针变量时,只能看到地址 通过这个地址,能访问该地址单元中的内容——间接访问 C++语言程序设计

6.1 指针 例如: 关于指针 指针变量pch1中存放着字符型变量ch1的地址 建立了pch1和ch1的指向关系:pch1指向ch1 指针是用于指向目标数据对象的 指针提供了对它所指向的目标数据对象的间接访问 C++语言程序设计

6.1 指针 指针变量的定义 格式:<类型名> *变量名1, *变量名2; “*”:声明变量是指针变量 指针的类型:是它所指向的目标数据对象的类型 例如:int *pa1,*pa2; 定义了指向整型数据的指针变量pa1、pa2 (int *)型:说明变量pa1、pa2的类型是整型指针,即指向整型变量 的指针 C++语言程序设计

6.1 指针 指针变量的初始化 定义指针变量时初始化 定义指针变量后赋值 “先初始化,后使用”是指针变量使用的一条基本原则 指针变量必须在初始化后才可以正确使用 初始化是指给它分配一个有效的数据地址 定义指针变量时初始化 例如: int a1=10; int *pa1=&a1; “&”:取地址运算符,可以获取变量的地址 定义指针变量后赋值 例如:int *pa1=0; int a1=10; pa1=&a1; 建议:在定义指针变量时,如果不确定指针的指向,应赋值为 0 或 NULL,表示不指向任何内存单元(空指针) C++语言程序设计

6.1 指针 例:观察指针的值和指针变量自身的地址 C++语言程序设计 //指针变量 #include<iostream> using namespace std; int main() { short int a=10; short int *pa=&a; cout<<“a的地址:”<<&a<<endl; cout<<“pa的值:”<<pa<<endl; cout<<“pa的地址:”<<&pa<<endl; cout<<“指针变量pa的长度:”<<sizeof(pa)<<“字节”<<endl; return 0; } C++语言程序设计

使用指针变量间接访问它所指向的目标数据对象 6.1 指针 使用指针变量间接访问它所指向的目标数据对象 使用取地址运算符“&”可以获取变量的地址 格式:&变量名 和变量连用,获取变量所对应的内存单元的地址 用指针来访问它所指向的变量,必须使用间接引用运算“*” 格式: *指针变量名 和指针变量连用,获取指针所指向的目标数据对象 例如:int a1=100; int *pa1=&a1; *pa1=200; //这里的*pa1 就可以看做是变量 a1 C++语言程序设计

6.1 指针 例:对变量的直接访问和间接访问 C++语言程序设计 //对变量的直接访问和间接访问 #include <iostream> using namespace std; void main() { char ch1='a',*pch=0; int k1=100; pch=&ch1; //指针pch指向变量ch1 cout<<"*pch="<<*pch<<endl; //间接访问 *pch='B'; cout<<"ch1="<<ch1<<endl; //直接访问 ch1=k1; cout<<"*pch="<<*pch<<endl; //间接访问 } C++语言程序设计

6.1 指针 指针的算术运算 指针可以和一个整数n做加法或者减法运算 提示:指针的算术运算和一般的数学算术运算有不同的含义。 例如: 例如:设p为指向数组中某元素的指针 p+n:指针指向p后方第n个元素 p-n:指针指向p前方第n个元素 指针的(++)和(--)运算 运算后,指针向其后方或前方的元素 指针相减 运算结果为其间元素个数 提示:指针的算术运算和一般的数学算术运算有不同的含义。 例如: pa+1:因为pa指向的目标数据的类型是短整型,所以实际计算出的指针值是: pa的值加2 pb+1:因为pb指向的目标数据的类型是整型,所以实际计算出的指针值是: pb的值加4 指针的算术运算和指针所指向的目标数据对象的类型有关 C++语言程序设计

6.1 指针 例:通过指针的间接访问, 输出下标为偶数的数组元素的值 C++语言程序设计 数组第一个元素(下标为0)的地址赋值给指针pk //指针运算 #include <iostream> using namespace std; void main() { int k1[10]={11,24,37,44,58,66,79,86,93,108},*pk=NULL; pk=&k1[0]; //数组第一个元素的地址赋值给指针pk for(int i=0;i<10;i=i+2) //每次循环,指针加2 cout<<"k1["<<i<<"]="<<*(pk+i)<<endl; } 每次循环,指针加i C++语言程序设计

6.1 指针 指针的关系运算 相同类型的指针可以进行各种关系运算 例如:可以测试两个指针是否相等 如果相等,则表示它们指向同一个目标数据对象 例如:使用指针进行间接访问之前,可以测试它是否已指向有效的目标数据 if(p!=0) 或者 if(p) //如果指针p的值不为0(NULL) if(p==NULL) 或者 if(!p) //如果指针p的值为0(NULL) C++语言程序设计

6.1 指针 指针的赋值运算 指针的赋值运算一定是地址的赋值 用来对指针变量赋值的可以是: 同类型变量的地址 同类型的已经初始化的指针变量或者同类型的指针常量 向系统申请的同类型动态数据的地址 0 或NULL 注意:不同类型的指针是不可以互相赋值的。在指针赋值时,不存在类型自动转换的机制。 C++语言程序设计