- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
                        查看更多
                        
                    
                第02章指针与动态内存分配
-2-
本章内容安排
指针与动态内存分配
函数及参数传递
雇员管理系统版本1(数组)
雇员管理系统版本2(动态内存分配)
-3-
1、指针变量
地址的概念
定义一个变量,程序执行后数据会加载到内存中的某个地方,计算机如何找到这个地方?
地址:内存按字节编号,0、1、2……
存储单元的编号就是该单元的地址,它表明了该存储单元在内存中的位置
系统根据变量的地址而不是任何别的东西寻找某个变量。 
变量的地址:变量占用的首个存储单元的地址
-4-
变量的地址
变量的地址
变量a占用的是内存的2000~2003四个单元,变量a的地址为2000。
源代码中写a=5;我们可以理解为将5赋给变量a;而计算机在执行程序时,只是将5送入2000~2003四个存储单元中。 
-5-
指针变量
 
    int a=5;
    int *pa;
    pa=a;
指针变量pa指
   向变量a 
-6-
2、指针变量的使用要点
引用前一定要初始化
int a=5;
int *pa;
// pa=a;    一定要初始化
*pa=10;
-7-
指针变量的使用要点
数据类型要匹配
指针变量的数据类型,必须与其所指向的变量的数据类型一致。 
不可以在不同类型指针变量之间赋值。
指针变量中存储的是一个表示地址的整数值,但不可以将一个整数值直接赋给指针变量。
-8-
指针变量的使用要点
void指针及强制类型转换
int a=7, *pa=a;
double b=2.5,*pb=b;
void *pv;
pv=pa;
cout *(int *)pvendl;
pv=pb;
cout*(double *)pvendl;
任意类型指针都可赋值给void类型
符合原来的类型
-9-
3、指针与一维数组
通过下标访问数组元素
int a[10];
int k;
for(k=0;k10;k++)
{
	 a[k] = k;
}
程序员负责检查下标是否越界!
-10-
指针与一维数组
通过数组名访问数组元素
int a[10];
int k;
for(k=0;k10;k++)
{
	  *(a+k) = k;
}
-11-
指针与一维数组
通过指针变量访问数组元素
int a[10];
int k,*p;
p=a;     
for(k=0;k10;k++)
{
	*(p+k)=k;
}
	
或p=a[0];
或者p[k]=k;
-12-
指针与一维数组
指针变量和数组名的使用区别
a[k]          p[k]           *(a+k)          *(p+k) 
for(k=0;k10;k++)
{
	*p++=k;
}
	
a不能被改变
X
*a++=k;
-13-
4、指向数组的指针
数据类型 (*指针变量名)[常量表达式]
int a[2][3]={……};
int (*p)[3];
p=a;
for(int i=0;i2;i++)
{
	for(int j=0;j3;j++)
	{
		 p[i][j] =……
	}
}
指向数组的指针常用于指向二维数组
-14-
指向数组的指针
访问数组元素的其它方式
a[i][j]               p[i][j]
*(a[i]+j)              *(p[i]+j)
*(*(a+i)+j)              *(*(p+i)+j)
-15-
5、指针数组
数据类型 *变量名[常量表达式]
int a,b,c,d;
int *p[4]={a,b,c,d};
int aa[2][3];
int (*pa)[3];
pa=aa;    
定义含4个元素的指针数组,p只是数组名
pa是指针变量,指向含3个int元素的一维数组
-16-
6、二级指针
指向指针的指针
int a=a;
int *pa=a;
int **ppa=pa;
a=5;             *pa=5;             **ppa=5;
-17-
二级指针示例
二级指针经常与指针数组配合使用
char **p;
char *name[]={“hello”, “good”,
		“world”, “bye”, “”};
p=name;
while(**p!=NULL)
{
	 cout *p++ endl;
}
运行结果
hello
good
world
bye
判断第一个字符是否为’\0’
-18-
7、动态内存分配
开辟某种类型的单个空间
	int *p;
	if((p=new int) == NULL)
	{
		cout“error”endl;
		exit(0);
	}
	*p=5;
	……
	delete p;
用相同类型的指针接收
malloc返回v
                您可能关注的文档
- 学会合理消费_人教版答辩.ppt
- 圆柱体积公式推导课件答辩.ppt
- 学会合理消费1答辩.ppt
- 五年级图形的平移答辩.ppt
- 圆锥面的车削二答辩.ppt
- 学会合理消费-答辩.ppt
- 五年级下第三单元口语交际答辩.ppt
- 学会认识美,学会建立异性间的友谊答辩.ppt
- 学会说点儿道理答辩.ppt
- 圆锥体积推导公式答辩.ppt
- 维修电工(技师)资格证考试综合提升练习试题含答案详解【突破训练】.docx
- 维修电工(技师)资格证考试综合提升练习试题含答案详解【培优a卷】.docx
- 维修电工(技师)资格证考试综合提升练习试题含答案详解(综合题).docx
- 维修电工(技师)资格证考试综合提升练习试题含答案详解【培优b卷】.docx
- 维修电工(技师)资格证考试综合提升练习试题含答案详解【培优b卷】.docx
- 维修电工(技师)资格证考试综合提升练习试题含答案详解【轻巧夺冠】.docx
- 海阳英伦纺织有限公司行业竞争力评级分析报告(2023版).pdf
- 维修电工(技师)资格证考试综合提升练习试题含答案详解.docx
- 维修电工(技师)资格证考试综合提升练习试题含答案详解ab卷.docx
- 维修电工(技师)资格证考试综合提升练习试题含完整答案详解(网校专用).docx
最近下载
- 2025年70岁以上老人考驾驶证三力测试题.pdf VIP
- 护理学基础各种注射法.pptx VIP
- 西游记中的乘法口诀(教学设计)-2024-2025学年二年级上册数学北师大版.docx VIP
- 护理事业十五五发展规划(2026-2030).docx
- 护理事业十五五(2026-2030)发展规划纲要.docx
- 青海省2025年中考语文真题试卷附同步解析答案.docx VIP
- DB50T 1015-2020 土地整治项目规划设计规范 .pdf VIP
- 2025-2026学年高中通用技术必修《技术与设计1》地质版(2019)教学设计合集.docx
- 【长租公寓】冠寓运营管理手册.docx VIP
- 2024-2025学年广东省东莞市东华中学九年级上期中物理试卷附答案解析.pdf
 原创力文档
原创力文档 
                        

文档评论(0)