c语言指针课件,C语言指针-课件.ppt

《C语言指针-课件.ppt》由会员分享,可在线阅读,更多相关《C语言指针-课件.ppt(73页珍藏版)》请在人人文库网上搜索。

1、2020年8月13日,中国科技大学信息学院,第1章,第8章指针,指针的目的:表示复杂的数据结构,如链表和树,便于处理字符串,打印;有效使用数组,int a5一是指针常数动态分配内存,利用动态数组使函数返回一个以上的值来直接处理内存地址,2020年8月13日,中国科技大学信息学院,2,地址和指针的概念,地址存储单元的数字指针变量的地址,如int * ptrPtr=变量I的内容可以被指针变量Ptr引用,2020年8月13日,中国科技大学信息学院,3,int I;/ptr是指向变量I的指针变量。注意:定义指针变量时,必须指定指针的基类型。例如int *ptr。定义指针变量ptr,其内容是int变量的。

2、地址。2020/8/13,中国科技大学信息学院,4,示例指针概念,int a,b;int *指针_1,*指针_ 2;a=100b=10指针_ 1=,2020年8月13日,中国科技大学信息学院,5,8.4指针变量引用,运算符*,int *指针_ 1,*指针_ 2;指针_ 1=,2020年8月13日,中国科技大学信息学院,6。示例按降序对输入的两个数字进行排序,main() int *p1,*p2,*p,a,b;Scanf(%d,%d,2020/8/13,中国科技大学信息学院,7,修改句子,主()int *p1,*p2,*p,a,b,c;Scanf(%d、%d、P211示例8.1指针概念示例8.2。

3、 8.8字符串指针示例8.3示例8.4示例8.5 8.7指针作为函数参数(按地址调用),2020年8月13日,中国科技大学信息学院,8,Q=,q x,p y,3,3,5,8,2020/8/13,中国科技大学信息学院,10月8.6日例如,不允许再次分配数组的名称。数组的每个元素都可以通过已定义的A和p来引用。图8-7,2020年8月13日,中国科技大学信息学院,11,示例8.6引用数组元素的方法为(I=0;i10i ) scanf(%d,a I);对于(I=0;i10(i ) printf(%d,*(a)I);int a10,I,* p;对于(I=0;i10I)2020年8月13日,中国科技大学。

4、信息学院,12,(示例8.7),主()int * p,I,a10对于(p=a,I=0;i10i ) scanf(%d,p);printf(n);对于(I=0;i10I,p ) printf(%d,* p);0: 9,A0A9A10a19,p=a,2020/8/13,中国科技大学信息学院,13,int a10已定义;int *p。p=a。(1)p I a IP=(2)* p=* P1;* p1=* p2* p2=p;P1,p2,x,y,1,3,1,3,2020/8/13,中国科技大学信息学院,18,示例8.8主函数,int x,y;int *p1,* p2p1=,交换(int *p1,int *。

5、p2) int *p,c;p=,交换(int *p1,int * p2)int * p;* p=* p1* p1=* p2* p2=* p;2020年8月13日,中国科技大学信息学院,第19期,交换函数由值调用,交换函数没有指针作为参数,交换其形式参数的值不能改变主音函数的实参数变量的内容。当交换功能执行绑定并返回到调用位置时,p1和p2单元被释放。交换(int p1,int p2)int p;p=p1p1=p2p2=p;5,9,P1,p2,x,y,5,9,9,5,2020/8/13,中国科技大学信息学院,20,按地址调用的交换函数,只交换指针内容,交换(int *p1,int * p2)in。

6、t * p;p=p1p1=p2p2=p;2020年8月13日,中国科技大学信息学院,2020年8月7日。一维数组用作函数参数。实际参数:数组名称或数组第一个元素的地址。形式参数:数组形式或指针变量数组用作函数参数。参数传递变量的地址。调用函数时,实际参数数组和形式参数组共享存储单元。如果调整后的函数改变了形式参数组元素的内容,它将改变实际参数组元素的值。printf(“% dn”,udf_strcmp(“字符串”,“奇怪”);/char str180,str280udf_strcmp(str1,str2) int udf_strcmp(char *s,char *t) /(char s,cha。

7、r t)for(;* s=* t;s,t ) if(*s=0)返回0;返回* s-* t;转移地址,int i,a10=3,7,9,11,0,6,7,5,4,2;投资部(a,10);/实参用数组名,void inv(int x,int n) /或int *x int t,I,j,m=(n-1)/2;对于(I=0;I=m。I)j=n-1-I;t=Xi;Xi=XJ;xj=t .2020/8/13,中科大信息学院,25,例8.5投资部函数,void inv(int *x,int n) /形参用指针变量int *p,t *,I *,j,m=(n-1)/2;I=x。j=x n-1;p=x m;对于(;i=p .I,j-)t=* I;* I=* j;* j=t;2020/8/13,中科大信息学院,26,例从10个数中找最大和最小的数,int max,min/定义外部变量void max_min_value(int *array,int n)/int array int *p,endarray _ end=数组n;最大值=最小值=*数组;for(p=数组1 .pmax)max=* p;否则如果(*p。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值