第14次课 第3 章数据类型 指针与引用.docx

上传人:b****1 文档编号:2131036 上传时间:2023-05-02 格式:DOCX 页数:11 大小:41.86KB
下载 相关 举报
第14次课 第3 章数据类型 指针与引用.docx_第1页
第1页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第2页
第2页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第3页
第3页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第4页
第4页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第5页
第5页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第6页
第6页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第7页
第7页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第8页
第8页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第9页
第9页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第10页
第10页 / 共11页
第14次课 第3 章数据类型 指针与引用.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第14次课 第3 章数据类型 指针与引用.docx

《第14次课 第3 章数据类型 指针与引用.docx》由会员分享,可在线阅读,更多相关《第14次课 第3 章数据类型 指针与引用.docx(11页珍藏版)》请在冰点文库上搜索。

第14次课 第3 章数据类型 指针与引用.docx

第14次课第3章数据类型指针与引用

重庆邮电大学教案

【面向过程程序设计】

周次

第12周第14次课

章节名称

第3章数据类型—指针与引用

授课方式

理论课(√)实验课()集中上机()

教学时数

2学时

教学目的及要求

理解内存地址的概念;

理解指针的概念;

掌握指针访问数组元素方法;

掌握引用的概念及使用方式;

教学内容提要

时间分配(分钟)

内存地址解释:

内存比如成居民居住的房屋,假设房屋都是方格子大小,每个房屋都有门牌号,内存地址就是这个门牌号,知道这个门牌号就可以把信件邮寄到这个居民。

内存空间的访问方式:

通过变量名访问:

变量名就代表着某一内存空间,通过这个变量名直接存取内存空间的值。

例:

inta;

a=3;

cout<

通过地址访问:

得到内存空间地址,直接通过地址对内存空间进行存取。

如何得到地址?

地址运算符:

&例:

intvar;则&var表示变量var在内存中的起始地址

指针变量的概念:

概念指针:

内存地址,用于间接访问内存单元指针变量:

用于存放地址的变量

指针变量声明例:

inti;int*i_pointer=&i;

i_pointer指向整型变量的指针

引用数据:

例1:

i=3;例2:

*i_pointer=3;

指针变量的初始化:

语法形式数据类型*指针名=初始地址;

例:

inta;

int*pa=&a;

int*qa=pa;

注意事项用变量地址作为初值时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。

可以用一个已赋初值的指针去初始化另一个指针变量。

指针变量的赋值运算:

指针名=地址“地址”中存放的数据类型与指针类型必须相符。

向指针变量赋的值必须是地址常量或变量,不能是普通整数。

但可以赋值为整数0,表示空指针。

指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsignedlongint型。

允许声明指向void类型的指针。

该指针可以被赋予任何类型对象的地址。

例:

void*general;

指针的声明、赋值与使用:

#includeusingnamespacestd;voidmain(){

int*i_pointer;//声明int型指针i_pointerinti;//声明int型数ii_pointer=&i;//取i的地址赋给i_pointeri=10;//int型数赋初值cout<<"Outputinti="<

指针类型的常量:

若声明指针常量,则指针本身的值不能被改变。

例:

char*constname2="John";name2="abc";//错误,指针常量值不能改变

#include

usingnamespacestd;

//-------------------------------------

voidmain()

{

inta=78,c=18;

constint*ip=&a;

constint*consticp=&c;

a=60;c=28;

cout<<"ip=>"<<*ip<

cout<<"icp=>"<<*icp<

}//==============================

指针变量的算术运算:

指针与整数的加减运算指针p加上或减去n,其意义是指针当前指向位置的前方或后方第n个数据的地址。

这种运算的结果值取决于指针指向的数据类型。

指针加一,减一运算指向下一个或前一个数据。

例如:

y=(*px)++相当于y=*(px++)

(*和++优先级相同,自右向左运算)

指针变量的关系运算:

关系运算指向相同类型数据的指针之间可以进行各种关系运算。

指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。

指针可以和零之间进行等于或不等于的关系运算。

例如:

p==0或p!

=0赋值运算向指针变量赋的值必须是地址常量或变量,不能是普通整数。

但可以赋值为整数0,表示空指针。

指向数组元素的指针:

声明与赋值例:

inta[10],*pa;pa=&a[0];或pa=a;通过指针引用数组元素经过上述声明及赋值后:

*pa就是a[0],*(pa+1)就是a[1],...,*(pa+i)就是a[i].

//Cout<

a[i],*(pa+i),*(a+i),pa[i]都是等效的。

不能写a++,因为a是数组首地址是常量。

设有一个int型数组a,有10个元素。

用三种方法输出各元素:

//使用数组名和下标:

voidmain(){inta[10];inti;for(i=0;i<10;i++)cin>>a[i];cout<

//使用数组名指针运算:

voidmain(){inta[10];inti;for(i=0;i<10;i++)cin>>a[i];cout<

//使用指针变量:

voidmain(){inta[10];int*p,i;for(i=0;i<10;i++)cin>>a[i];cout<

 

动态申请内存操作符new:

new类型名T(初值列表)功能:

在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。

结果值:

成功:

T类型的指针,指向新分配的内存。

失败:

0(NULL)

释放内存操作符delete:

delete指针P功能:

释放指针P所指向的内存。

P必须是new操作的返回值。

#include

usingnamespacestd;

voidmain()

{

int*intArray;

inteleNum;

cout<<"Pleaseinputdynamicelementnumber:

"<

cin>>eleNum;

intArray=newint[eleNum];

if(intArray==NULL)

{

cout<<"OVERFLOW!

"<

return;

}

for(inti=0;i

{

*(intArray+i)=i*2;

}

//

for(i=0;i

{

cout<<*(intArray+i)<

}

delete[]intArray;

}

动态存储分配函数:

void*malloc(size);参数size:

欲分配的字节数返回值:

成功,则返回void型指针。

失败,则返回空指针。

头文件:

动态内存释放函数:

voidfree(void*memblock);参数memblock:

指针,指向需释放的内存。

返回值:

无头文件:

#include

#include

usingnamespacestd;

voidmain()

{

int*intArray;

inteleNum;

cout<<"Pleaseinputdynamicelementnumber:

"<

cin>>eleNum;

intArray=(int*)malloc(eleNum*sizeof(int));

if(intArray==NULL)

{

cout<<"OVERFLOW!

"<

return;

}

for(inti=0;i

{

*(intArray+i)=i*2;

}

//

for(i=0;i

{

cout<<*(intArray+i)<

}

free(intArray);

}

 

引用类型:

当需要给某个变量取个别名,用别名去操作这个变量时,就必须要使用引用类型。

引用的定义:

引用必须初始化,因为引用总是附属于某个实体

intsomeInt=5;

int&rInt=someIne;//初始化

修改引用的值,即是修改了附属的实体值

inta=5;

int&ra=a;

ra=8;

cout<

结果为:

8

#include

usingnamespacestd;

//-------------------------------------

voidmain()

{

intint1=5;

int&rInt=int1;

cout<<"&int1:

"<<&int1<<"int1:

"<

cout<<"&rInt:

"<<&rInt<<"rInt:

"<

intint2=8;

rInt=int2;

cout<<"&rInt:

"<<&rInt<<"rInt:

"<

}//=================

 

20

 

20

 

10

 

10

 

20

 

10

 

10

 

10

 

10

 

20

 

教学重点与难点

重点一:

内存地址和指针的概念理解;

重点二:

指针访问数组元素的方法;

重点三:

引用概念理解及其使用方法;

 

讨论、练习、作业

在教学辅助系统中阅读程序f0312~f0315;

教学手段

演示例程的运行,指导学生阅读代码,引出理论知识点,结合多媒体课件进行讲解

参考资料

《C++程序设计教程(第二版)》,钱能,清华大学出版社;

《C++面向对象程序设计》,谭浩强,清华大学出版社

《C++语言程序设计(第4版)》,郑莉,清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2