指针的应用―链表.ppt

指针的应用―链表.ppt

ID:56476460

大小:321.50 KB

页数:29页

时间:2020-06-19

指针的应用―链表.ppt_第1页
指针的应用―链表.ppt_第2页
指针的应用―链表.ppt_第3页
指针的应用―链表.ppt_第4页
指针的应用―链表.ppt_第5页
资源描述:

《指针的应用―链表.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、voidexchange(inta,intb){intt;t=a;a=b;b=t}Main(){inta=1,b=2;exchange(a,b);printf(“a=%d,b=%d”,a,b);}1…...内存2000200120022005020032004…...…...…...1、内存地址──内存中存储单元的编号101102201202301302401402501502601602教学楼教室号码存储地址教室存储单元教室有容量存储单元有大小(字节单元、字单元)50存储数据注意:内存单元的地址与内存单元中的数据是两个完全不同的概念。2“指针就是地址”!!!地址值(也就是内存单元的编址)。

2、是什么类型的数据的地址。(这就存在着一个跨度也就是存储空间大小的问题)。3明白指针就是地址,这一点十分重要。多数情况下,这个地址是指内存中一个变量的起始位置。如果一个变量包含了另一个变量的地址,那么第1个变量就是个指针变量,而且说它是“指向”第2个变量的,“指针”由此而得其名。例如,如果在地址为1000的变量指向地址为1004的变量,那么也就是说地址为1000的这个变量的值是1004。4为什么要表达为“指向”呢?我们将会看到如果变量p的值是变量a的地址,则可以利用变量p来访问和操作变量a(其实这是很自然的事情,有了某变量的地址当然就可以访问该变量)。图1解释了这一点,它仅仅用来对地址进行偏移

3、。指针的基本概念510041000100110021003121004图1一个变量指向另一个变量内存单元内存地址61、变量指针(变量的指针)一个变量x的地址就是该变量的指针,记作&x,即在变量名前加上取地址运算符“&”。2、指针变量专门用来存放地址的变量称为指针变量。当指针变量中存放着某一个变量的地址时,就称这个指针变量指向那一个变量。由于地址或指针是常量,因此当我们需要对地址进行操作的时候一般要用指针变量来保存该地址再做处理。变量的指针与指针的变量7整型变量i变量i_pointer…...…...102000200420062005200120022003变量指针与指针变量变量指针:一个变

4、量的地址指针变量:专门存放变量地址的变量2000指针变量整型变量i的内容指针变量i_pointer的内容(是地址)变量的地址指针指针变量变量变量地址(指针)变量值指向地址存入指针变量8一般形式:[存储类型]数据类型符*变量名[=初始值];合法标识符表示定义指针变量不是‘*’运算符指针的目标变量的数据类型指针变量本身的存储类型注意:int*p1,*p2;与int*p1,p2;指针变量名是p1,p2,不是*p1,*p2指针变量只能指向定义时所规定类型的变量指针变量定义后,变量值不确定,应用前必须先赋值例int*p1,*p2;float*q;staticchar*name;指针变量的定义与赋值9赋

5、值语句赋值例inta=20;int*p,*q;p=&a;q=p;整型变量a指针变量p指针变量q……...2000…...…...202000200010零指针与空类型指针零指针:定义:指针变量值为零表示:int*p=0;p指向地址为0的单元,系统保证该单元不作它用表示指针变量值没有意义#defineNULL0int*p=NULL;p=NULL与未对p赋值不同用途:避免指针变量的非法引用在程序中常作为状态比较例int*p;......while(p!=NULL){...…}11指针变量的命名规则和其他变量的命名规则一样;指针变量不能与现有变量同名;指针变量可存放C语言中的任何基本数据类型、数组

6、和其他所有高级数据结构的地址;若指针变量已声明为指向某种类型数据的地址,则它不能用于存储其他类型数据的地址;应为指针变量指定一个地址后,才能在语句中使用指针.指针变量的特点12想要动态地根据需要开辟和回收存储空间,通过调用动态内存分配函数可以做到这一点。因此要学习动态链表,首先就要学习能实现动态开辟存储空间功能的几个函数。动态内存分配函数131.malloc函数(1)函数原型:void*malloc(unsignedintsize);(2)作用在内存的动态存储区中分配一个长度为size的的连续空间。(3)函数返回值返回一个指向分配域起始地址的指针(类型为void*),若未能成功执行则返回空指

7、(NULL)。8.3动态链表和动态内存分配函数14inta=2;int*b=(int*)malloc(sizeof(a*3));该程序段将会开辟以b为首地址的连续的a*3个int空间,而b就相当于数组名。152.calloc函数(1)函数原型:void*calloc(unsignedintn,unsignedintsize);(2)作用在内存的动态存储区中分配n个长度为size的的连续空间。(3)函数返回值返

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

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

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