- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
两指针变量相减.ppt
面向对象程序设计;第三章 指针和引用;3.1 指针 ;;……;
指针定义:类型 *指针名1, *指针名2,…;
例:
int *ip1,ip2;
char *pc;
double *dp1,dp2;
char (*pa)[3];//指向一维数组的指针
ip1是一个指向整型变量的指针变量,而ip2则是一个整型变量,而不是指针。
;指针的赋值 ;下面的定义以及对两个指针pi和pi2的赋值都是合法的。
int ival=1024;
int *pi=0; //pi被初始化为没有指向任何对象
int *pi2=ival; //pi2被初始化为ival的地址
pi=pi2; //ok:pi和pi2现在都指向ival
pi2=0; //现在pi2没有指向任何对象
指针不能持有非地址值。例如,下面的赋值将导致编译错误:
pi=ival; //错误:pi被赋以int值ival;指针不能被初始化或赋值为其它类型对象的地址值。例如,已知如下定义:
double dval;
double *pd=dval;
那么,下面两条语句都会引起编译时刻错误:
pi=pd; //无效的类型赋值:int *=double *
pi=dval;;3.1.2 指针的运算 ;注意:指针运算符*和指针变量说明中的指针说明符*?不是一回事。在指针变量说明中,“*”是类型说明符,而表达式中出现的“*”则是一个运算符,用以表示取指针变量所指的变量的内容。
void main(){
int a=5,*p=a;
cout*p;
};指针变量的运算;④把数组的首地址赋予指向数组的指针变量。例如:?
int?a[5],*pa;
pa=a;?//数组名表示数组的首地址,故可赋予指向数组的指针变量pa
⑤把字符串的首地址赋予指向字符类型的指针变量。例如:
char?*pc; pc=C?language;或用初始化赋值的方法写为:char?*pc=C?Language;
⑥把函数的入口地址赋予指向函数的指针变量。例如:
int?(*pf)(); pf=f;?//f为函数名;(2)地址加减算术运算; 两指针变量相减 ;;例3.1
#include iostream.h
void main()
{
int a=10,b=20,s,t,*pa,*pb;
pa=a;
pb=b;
s=*pa+*pb;
t=*pa**pb;
couts=sendlt=tendl;
};3.1.3指针的应用及注意的问题 ;3.2 引用 ;类型引用名(变量名);
或者
类型引用名=变量名;
引用类型用类型标识符和一个取地址操作符来定义,引用必须被初始化。
例: int a=3;
//int m(a);
int m=a;
m=m+5;
;例:
int ival=1024;
int refval=ival; //refval是一个指向ival的引用
int refval2; //错误:引用必须被初始化为指向一个对象
虽然引用也可以被用作一种指针,但是相对指针那样用一个对象的地址来初始化引用却是错误的。
int ival=1024;
int refval=ival; //错误:refval是int类型,不是int*
int *pi=ival;
int *refptr=pi; //ok:refptr是一个指针的引用
一旦引用已经定义,它就不能再指向其他的对象(这是它为什么必须被初始化的原因)。 ;每个引用的定义都必须以取地址操作符开始
int ival=1024,ival2=2048; //定义两个int类型的对象
int rval=ival,rval2=ival2; //定义一个引用和一个对象
int ival3=1024,*pi=ival3,ri=ival3; //定义一个对象、一个指针和一个引用
int rval3=ival3,rval4=ival2; //定义两个引用
;#include iostream.h
void main()
{
int val(5);//val的初值为5
int refv=val;
refv=refv+5;
coutvalendl;
int *p=refv,val1(refv);//vall是整型变量,初值为refv的值。
cout*p\tval1endl;
} ;3.3 指针与引用的区别 ;2.指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。
#include iostream.h
void main()
{
char s1=N;
char s2=C;
char rs = s1
您可能关注的文档
最近下载
- 基于VISSIM的城市道路交叉口自适应信号控制仿真技术研究-交通运输规划与管理专业论文.docx VIP
- 专题05 名著导读【备考2025】2024年中考语文真题分类汇编 全国版(含答案).docx VIP
- (完整版)交管12123学法减分考试题库及答案.docx
- 群建阀门公司安全生产事故应急预案.doc VIP
- GA_T 1343-2016防暴升降式阻车路障.pdf
- 教育数字化转型背景下高校数字素养教育实践模式创新路径.docx VIP
- 200个句子涵盖了高中英语4500词汇[宝典].doc
- 体育馆会堂网架提升专项施工方案.doc
- 小学英语“教—学—评”一体化的优势及运用对策.pptx VIP
- 2020年2月四川省喜德县医院系统(卫生类)招聘考试《医学基础知识》试卷及答案.pdf
文档评论(0)