《讲C语言指针》PPT课件.ppt

《讲C语言指针》PPT课件.ppt

ID:52107416

大小:330.00 KB

页数:17页

时间:2020-03-31

《讲C语言指针》PPT课件.ppt_第1页
《讲C语言指针》PPT课件.ppt_第2页
《讲C语言指针》PPT课件.ppt_第3页
《讲C语言指针》PPT课件.ppt_第4页
《讲C语言指针》PPT课件.ppt_第5页
资源描述:

《《讲C语言指针》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十讲指针目标指针的概念与定义方式指针的运算指针操作一维数组指针操作二维数组课本10.1—10.4地址与指针的概念什么是地址?变量的地址—如图inta=45;floatf=3.14;……af2008H2009H200AH200BH200CH200DH200EH200FH2010H……453.14指针就是地址!指针变量的定义概念:用以存放变量地址的变量称为指针变量定义方式:数据类型名*指针变量名;例如:int*p1,q;int*p2,*p3;float*f1;char*c;double*d;1、指针变量名遵循标识符的定义方式2、指针变量名与*间有无空格都可以3、注

2、意和普通变量的区别指针变量的赋值如何让一个指针变量指向一个内存地址?inta=12,*p;p=&a;&取地址运算符或者inta=12,*p=&a;但是int*p=&a,a=12;//?*运算符的三种用途1、乘法运算2、定义指针变量3、取地址中的值指针变量变量变量地址(指针)变量值指向地址存入指针变量指针变量的使用有程序段如下:#include”stdio.h”voidmain(){inta=12,b,c,*p1=&a,*p2;p2=&b;*p2=24;c=a+b;c=*p1+*p2;printf(“c=%d”,c);printf(“c=%d”,c);}1

3、、&和*的运算优先级相同,结合性:右→左2、指针变量的数据类型必须和变量的数据类型一致3、未指向具体变量的指针变量不能引用变量的两种访问方式1、通过变量名访问2、通过指针访问指针变量的运算(一)1、指针可以和整数相加减例如:inta=24,b=26,*p;p=&a;printf(“%d”,*(p+1));又如:inta=12,b=24,c=36,d=48,*p;p=&a;printf(“a=%d”,*p);printf(“b=%d”,*(p+1));printf(“c=%d”,*(p+2));printf(“d=%d”,*(p+3));dcba4

4、8362412p不同类型的指针变量加上一个整数时,依据其数据类型所占字节数不同,移动的字节数也不同低高指针变量的运算(二)例如:inta,b,c,d,*p=&b;a=12;b=24;c=36;d=48;printf("a=%d",*(p+1));printf("b=%d",*p);printf("c=%d",*(p--));printf("d=%d",*p--);a=12b=24c=24d=36说明:1、当出现*p--时,和*(p--)等价2、无论做++、--运算,都对指针变量进行了赋值3、两个指针变量可以做减运算,运算结果是两地址在内存中相隔的

5、字节数;但不可做加运算,加运算没有意义指向一维数组的指针数组名又可表示数组元素在内存中存放的首地址,例如:inta[10],*p;那么a表示数组的首地址,其中,&a[i]与a+i等价如果访问某个元素:a[i]与*(a+i)等价或者*&a[i]或者利用指针:p=a;或者p=&a[0];然后利用:*(p+i)访问某个数组元素C语言对数组下标越界或者指针越界不做检查指针处理字符串使用字符指针处理字符串,如下:char*p=“china”;或者char*p;p=“china”;定义后,指针p就指向字符串的第一个字符c那么,*(p+2)表示什么?二级指针二级指针是用于存放

6、地址数据的地址变量例如:inta=3,*p,**p1;p=&a;p1=&p;若要访问数据3,则需要使用**p.如图:app13a的地址p的地址指针数组处理字符串如果数组的每个元素都是指针,就称为指针数组。一般用它来批量定义字符串,用来批量处理字符串定义方式:char*p[3]={“china”,”austrilia”,”russia”};那么:p[0]表示“china”的首地址p[1]表示“austrilia”的首地址p[2]表示“american”的首地址指针数组处理一维数组如果:inta[5]={0,1,2,3,4};int*pa[5]={&a[0],&a[

7、1],&a[2],&a[3],&a[4]};int**p=pa;那么p相当于pa问题:pa[3]表示什么?p+3表示什么?*pa[3]表示什么?*(p+3)表示什么?内存的动态分配1、malloc(size):在内存的动态存储区分配一个长度为size字节的连续空间,返回一个指针;若执行失败,则返回NULL。例如:char*p1;p1=(char*)malloc(80);2、calloc(n,size):在内存动态存储区分配n个长度为size的的字节空间,返回一个指针;若执行失败则返回NULL。3、free(p):释放动态分配的字节空间使用以上函数,必须在文件头部

8、加上#include”s

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

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

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