程序设计基础 张杰敏第五章 指针与数组.ppt

程序设计基础 张杰敏第五章 指针与数组.ppt

ID:51964192

大小:2.47 MB

页数:115页

时间:2020-03-26

程序设计基础 张杰敏第五章 指针与数组.ppt_第1页
程序设计基础 张杰敏第五章 指针与数组.ppt_第2页
程序设计基础 张杰敏第五章 指针与数组.ppt_第3页
程序设计基础 张杰敏第五章 指针与数组.ppt_第4页
程序设计基础 张杰敏第五章 指针与数组.ppt_第5页
资源描述:

《程序设计基础 张杰敏第五章 指针与数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、程序设计基础主编:张杰敏第五章指针与数组5.0程序设计与数据结构5.1指针与地址5.2指针算术运算5.3指针与函数参数5.4数组5.5字符串的指针5.6指针的指针5.7指针与多维数组5.8指针与函数2指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。C程序设计中使用指针可以:①使程序简洁、紧凑、高效②有效地表示复杂的数据结构③动态分配内存④得到多于一个的函数返回值⑤能象汇编语言一样处理内存地址,从而编出精练而高效的程序学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C

2、语言的一个标志,可以说不懂C语言中的指针就不懂什么是C语言。5.0程序设计与数据结构35.1指针与地址…...内存2000200120022005020032004…...…...…...1、内存地址──内存中存储单元的编号101102201202301302401402501502601602教学楼教室号码存储地址教室存储单元教室有容量存储单元有大小(字节单元、字单元)50存储数据注意:内存单元的地址与内存单元中的数据是两个完全不同的概念。4内存…...…...0200020012002200520032004….

3、..…...2、变量地址──系统分配给变量的内存单元的起始地址程序中:inti;floatk;内存中每个字节有一个编号-----地址ik编译或函数调用时为其分配内存单元变量是对程序中数据存储空间的抽象i的地址k的地址注意:在TC或BC下,系统将给变量i分配2字节的单元,而VC下将是4字节的单元!5整型变量i变量i_pointer…...…...1020002004200620052001200220033、指针与指针变量指针:一个变量的地址指针变量:专门存放变量地址的变量2000指针变量整型变量i的内容指针变量i_p

4、ointer的内容(是地址)变量的地址指针指针变量变量变量地址(指针)变量值指向地址存入指针变量64、&与*运算符含义含义:取变量的地址单目运算符结合性:自右向左含义:取指针所指向变量的内容单目运算符结合性:自右向左两者关系:互为逆运算理解200010i_pointer*i_pointer&i_pointerii_pointer&i&(*i_pointer)i*i_pointer*(&i)i_pointer=&i=&(*i_pointer)i=*i_pointer=*(&i)…...…...2000200420062

5、005整型变量i10变量i_pointer2001200220032000指针变量i_pointer-----指针变量,它的内容是地址量*i_pointer----指针的目标变量,它的内容是数据&i_pointer---指针变量占用内存的地址71、指针变量的加、减运算5.2指针的算术运算指针可以参与加法和减法运算,但其加、减的含义绝对不同于一般数值的加减运算。如果指针p是这样定义的:ptype*p;,并且p当前的值是ADDR,那么:p±n的值=ADDR±n*sizeof(ptype)int*pi;char*pc;lo

6、ng*pl;pi=(int*)1000;pc=(char*)1000;pl=(long*)1000;pi++;//pi的值将是1002(假设int型占2byte)pi--;//pi的值将是998pc++;//pc的值将是1001pc--;//pc的值将是999pl++;//pl的值将是1004pl--;//pi的值将是996注意:两个指针相加没有任何意义,但两个指针相减则有一定的意义,可表示两指针之间所相差的内存单元数或元素的个数,在后面的学习中就会体会到。82、指针变量的关系运算若p1和p2指向同一数组,则p1

7、2表示p1指的元素在前p1>p2表示p1指的元素在后p1==p2表示p1与p2指向同一元素若p1与p2不指向同一数组,比较无意义p==NULL或p!=NULL95.3指针与函数参数参数传递方式:传值调用和传址调用传值调用:将参数值传递给形参。实参和形参占用各自的内存单元,互不干扰,函数中对形参值得改变不会改变实参的值,属于单向数据传递方式。传址调用:将实参的地址传递给形参。形参和实参占用同样的内存单元,对形参值得改变也会改变实参的值,属于双向数据传递方式。voidfunc(inta){a=5;}voidmain(){

8、intb=0;func(b);printf("b=%d",b);}传值调用voidfunc(int*p){*p=5;}voidmain(){intb=0;func(&b);printf("b=%d",b);}传址调用运行结果:b=0运行结果:b=5为什么结果不一样呢?0变量b形参a50变量b指针p5&b0&b10voidswap(int

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。