欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言程序设计第二十一讲 指针(4).ppt

    • 资源ID:1135587       资源大小:563KB        全文页数:26页
    • 资源格式: PPT        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计第二十一讲 指针(4).ppt

    1、C语言程序设计基础主讲人:庞新苗手机:13560715936第二十一讲:指针(4)指针数组和指向指针的指针主要内容:主要内容:1、指针数组的应用;、指针数组的应用;2、指向指针的指针;、指向指针的指针;一、一、指针数组和多级指针指针数组和多级指针用于处理二维数组或多个字符串用于处理二维数组或多个字符串指针数组指针数组定义:数组中的元素为指针变量定义:数组中的元素为指针变量定义形式:定义形式:存储类型存储类型 数据类型数据类型*数组名数组名数组长度说明数组长度说明;例例 int *p4;指针所指向变量的数据类型指针所指向变量的数据类型指针本身的存储类型指针本身的存储类型区分int *p4与int

    2、 (*p)4指针数组赋值与初始化指针数组赋值与初始化赋值:main()int b23,*pb2;pb0=b0;pb1=b1;.int *pb2pb0pb1int b23123246初始化:main()int b23,*pb=b0,b1;.int *pb2pb0pb1int b23123246指针数组赋值与初始化指针数组赋值与初始化L i s p 0F o r t r a n 0B a s i c 0p0p1p2p30赋值:main()char a=Fortran;char b=Lisp;char c=Basic;char*p4;p0=a;p1=b;p2=c;p3=NULL;.或:main()c

    3、har*p4;p0=Fortran;p1=Lisp;p2=Basic;p3=NULL;.初始化:main()char*p=Fortran,Lisp,Basic,NULL;.L i s p 0F o r t r a n 0B a s i c 0p0p1p2p30 char name59=“gain”,“much”,“stronger”,“point”,“bye”;char*name5=“gain”,“much”,“stronger”,“point”,“bye”;g a i n 0s t r o n g e r 0p o i n t 0m u c h 0name0name1name2name3na

    4、me4b y e 0g a i n 0s t r o n g e r 0p o i n t 0m u c h 0b y e 0二维数组与指针数组区别二维数组与指针数组区别:二维数组存储空间固定字符指针数组相当于可变列长的二维数组分配内存单元=数组维数*2+各字符串长度指针数组元素的作用相当于二维数组的行名但指针数组中元素是指针变量二维数组的行名是地址常量main()int b23,*pb2;int i,j;for(i=0;i2;i+)for(j=0;j3;j+)bij=(i+1)*(j+1);pb0=b0;pb1=b1;for(i=0;i2;i+)for(j=0;j3;j+,pbi+)prin

    5、tf(b%d%d:%2dn,i,j,*pbi);例例 用指针数组处理二维数组用指针数组处理二维数组int *pb2pb0pb1int b23b00 *pb0b01 *(pb0+1)b02 *(pb0+2)b10 *pb1b11 *(pb1+1)b12 *(pb1+2)123246例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)main()void sort(char *name,int n),print(char *name,int n);char*name=Follow me,BASIC,Great Wall,FORTRAN,Computer;int n=5;sort(name

    6、,n);print(name,n);void sort(char*name,int n)char*temp;int i,j,k;for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)temp=namei;namei=namek;namek=temp;name0name1name2name3name4nameGreat WallFORTRANComputerFollow meBASICkjkjjji=0例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)main()void sort(char *name,int n),print(char *nam

    7、e,int n);char*name=Follow me,BASIC,Great Wall,FORTRAN,Computer;int n=5;sort(name,n);print(name,n);void sort(char*name,int n)char*temp;int i,j,k;for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)temp=namei;namei=namek;namek=temp;name0name1name2name3name4nameGreat WallFORTRANComputerFollow meBASICkkjjji=1k

    8、例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)main()void sort(char *name,int n),print(char *name,int n);char*name=Follow me,BASIC,Great Wall,FORTRAN,Computer;int n=5;sort(name,n);print(name,n);void sort(char*name,int n)char*temp;int i,j,k;for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)temp=namei;namei=namek;namek=te

    9、mp;name0name1name2name3name4nameGreat WallFORTRANComputerFollow meBASICkkjji=2例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)main()void sort(char *name,int n),print(char *name,int n);char*name=Follow me,BASIC,Great Wall,FORTRAN,Computer;int n=5;sort(name,n);print(name,n);void sort(char*name,int n)char*temp;int i,j,

    10、k;for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)temp=namei;namei=namek;namek=temp;name0name1name2name3name4nameGreat WallFORTRANComputerFollow meBASICkkji=3例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)main()void sort(char *name,int n),print(char *name,int n);char*name=Follow me,BASIC,Great Wall,FORTRAN,Computer;in

    11、t n=5;sort(name,n);print(name,n);void sort(char*name,int n)char*temp;int i,j,k;for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)temp=namei;namei=namek;namek=temp;name0name1name2name3name4nameGreat WallFORTRANComputerFollow meBASIC二、多级指针二、多级指针定义定义:指向指针的指针指向指针的指针一级指针一级指针:指针变量中存放目标变量的地址指针变量中存放目标变量的地址p1&p2&

    12、i3P2(指针变量指针变量)i(整型变量整型变量)例例 int *p1;int *p2;int i=3;p2=&i;p1=&p2;*p1=5;二级指针二级指针:指针变量中存放一级指针变量的地址指针变量中存放一级指针变量的地址例例 int *p;int i=3;p=&i;*p=5;&i3P(指针变量指针变量)i(整型变量整型变量)一级指针一级指针单级间接寻址单级间接寻址二级指针二级指针一级指针一级指针目标变量目标变量二级间接寻址二级间接寻址定义形式:定义形式:存储类型存储类型 数据类型数据类型 *指针名;指针名;如如 char *p;例例 int i,*p;p=&i;()/p是二级指针,不能用变

    13、量地址为其赋值是二级指针,不能用变量地址为其赋值指针本身的存储类型指针本身的存储类型最终目标变量的数据类型最终目标变量的数据类型*p p是是p p间接指向对象的地址间接指向对象的地址*p p是是p p间接指向对象的值间接指向对象的值例例 int i=3;int *p1;int *p2;p1=&i;p2=&p1;*p=5;ip1p23&i&p1*p2,*p1*p2多级指针多级指针例例 三级指针三级指针 int *p;四级指针四级指针 char *p;20002008200A20022004200612变量a 变量b(main)指针变量p2000 指针变量q2002例例 一级指针与二级指针一级指针

    14、与二级指针#include void swap(int*r,int*s)int*t;t=r;r=s;s=t;main()int a=1,b=2,*p,*q;p=&a;q=&b;swap(p,q);printf(%d,%dn,*p,*q);20022000COPY 指针变量s 指针变量r(swap)指针变量t20002002200020002008200A20022004200612变量a 变量b(main)指针变量p2000 指针变量q2002例例 一级指针与二级指针一级指针与二级指针#include void swap(int*r,int*s)int*t;t=r;r=s;s=t;main()

    15、int a=1,b=2,*p,*q;p=&a;q=&b;swap(p,q);printf(%d,%dn,*p,*q);输出:1,2例例 一级指针与二级指针一级指针与二级指针#include void swap(int*r,int*s)int*t;t=r;r=s;s=t;main()int a=1,b=2,*p,*q;p=&a;q=&b;swap(p,q);printf(%d,%dn,*p,*q);abpqabpqrsabpqsrabpq输出:1,2例例 一级指针与二级指针一级指针与二级指针#include void swap(int*r,int*s)int*t;t=*r;*r=*s;*s=t;

    16、main()int a=1,b=2,*p,*q;p=&a;q=&b;swap(&p,&q);printf(%d,%dn,*p,*q);20002008200A20022004200612变量a 变量b(main)指针变量p2000 指针变量q200220062004COPY 二级指针s 二级指针r(swap)指针变量t200020022000例例 一级指针与二级指针一级指针与二级指针#include void swap(int*r,int*s)int*t;t=*r;*r=*s;*s=t;main()int a=1,b=2,*p,*q;p=&a;q=&b;swap(&p,&q);printf(%

    17、d,%dn,*p,*q);20002008200A20022004200612变量a 变量b(main)指针变量p2000 指针变量q200220002002输出:2,1例例 一级指针与二级指针一级指针与二级指针#include void swap(int*r,int*s)int*t;t=*r;*r=*s;*s=t;main()int a=1,b=2,*p,*q;p=&a;q=&b;swap(&p,&q);printf(%d,%dn,*p,*q);abpqbapqabrspqabrspq输出:2,1例例 用二级指针处理字符串用二级指针处理字符串#define NULL 0void main()

    18、char*p;char*name=hello,good,world,bye,;p=name+1;printf(%o:%s ,*p,*p);p+=2;while(*p!=NULL)printf(%sn,*p+);name0name1name2name3name4char*name5worldbye0hellogoodnamep运行结果:644:good bye用*p可输出地址(%o或%x),也可用它输出字符串(%s)p*(p+)二级指针与指针数组的关系二级指针与指针数组的关系int *p 与与 int *q10 指针数组名是二级指针指针数组名是二级指针常量常量p=q;p+i 是是qi的地址的地址

    19、指针数组作形参,指针数组作形参,int *q 与与int*q完全等价;但作为变量定完全等价;但作为变量定义两者不同义两者不同系统只给系统只给p分配能保存一个指针值的内存区;而给分配能保存一个指针值的内存区;而给q分配分配10块内块内存区,每块可保存一个指针值存区,每块可保存一个指针值命令行参数命令行参数命令行:在操作系统状态下,为执行某个程序而键入命令行:在操作系统状态下,为执行某个程序而键入的一行字符的一行字符命令行一般形式:命令行一般形式:命令名命令名 参数参数1 参数参数2参数参数nmain(int argc,char *argv)命令行参数传递命令行参数传递带参数的带参数的main函数

    20、形式:函数形式:C:TC copy.exe source.c temp.c有有3个字符串参数的命令行个字符串参数的命令行命令行中参数个数命令行中参数个数元素指向命令行参数元素指向命令行参数中各字符串首地址中各字符串首地址形参名任意形参名任意命令行命令行实参实参main(形参形参)系统自动调用系统自动调用mainmain函数时传递函数时传递第一个参数第一个参数:main所在的所在的可执行文件名可执行文件名例例 输出命令行参数输出命令行参数/*test.c*/main(int argc,char*argv)while(argc1)+argv;printf(%sn,*argv);-argc;main

    21、(int argc,char *argv)while(argc-0)printf(%sn,*argv+);1.编译、链接test.c,生成可执行文件test.exe2.在DOS状态下运行(test.exe所在路径下)例如:C:TC test.exe hello world!运行结果:hello world!运行结果:test hello world!argv0argv1argv2char*argvworldtesthelloargvargc=3定义定义含义含义int i;int *p;int an;int *pn;int (*p)n;int f();int*p();int(*p)();int*

    22、p;定义整型变量定义整型变量ip为指向整型数据的指针变量为指向整型数据的指针变量定义含定义含n个元素的整型数组个元素的整型数组an个指向整型数据的指针变量组成的指针数组个指向整型数据的指针变量组成的指针数组pp为指向含为指向含n个元素的一维整型数组的指针变量个元素的一维整型数组的指针变量f为返回整型数的函数为返回整型数的函数p为返回指针的函数,该指针指向一个整型数据为返回指针的函数,该指针指向一个整型数据p为指向函数的指针变量,该函数返回整型数为指向函数的指针变量,该函数返回整型数p为指针变量,它指向一个指向整型数据的指针变量为指针变量,它指向一个指向整型数据的指针变量指针的数据类型指针的数据

    23、类型例例 下列定义的含义下列定义的含义(1)int *p3;(2)int (*p)3;(3)int *p(int);(4)int (*p)(int);(5)int *(*p)(int);(6)int(*p3)(int);(7)int *(*p3)(int);函数指针数组,函数返回函数指针数组,函数返回int型指针型指针指针数组指针数组指向一维数组的指针指向一维数组的指针返回指针的函数返回指针的函数指向函数的指针,函数返回指向函数的指针,函数返回int型变量型变量指向函数的指针,函数返回指向函数的指针,函数返回int 型指针型指针函数指针数组,函数返回函数指针数组,函数返回int型变量型变量作业作业


    注意事项

    本文(C语言程序设计第二十一讲 指针(4).ppt)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922