




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(1)内存中字节的编号称为字节的地址。内存中连续的若干字节称为一段内存空间,这段空间的第一个字节的地址称为这段空间的首地址,简称为这段空间的地址。一个地址“指向”它所对应的内存空间。地址p所指向的内存空间用*p表示。指针回顾……50215022502350245025502650275028502950305031503250335034……-58950335024p*p*5033*5024(2)变量代表了一段内存空间,它有地址,它存放的数称为值。什么类型的变量存放什么类型的数。把一个数存放在变量中称为赋值。(3)指针变量也是变量,但只能存放地址。如果p是指针变量,p指向u表示p的值指向ux4……50215022502350245025502650275028502950305031503250335034……5022x1x2x362G1.36输出是什么?main(){intx,*u,*v;x=20;u=&x;v=u;*v=30;printf("%d\n",x);}v……50215022502350245025502650275028502950305031503250335034……xu七、函数7.5特殊类型的参数(1)指针作为参数指针作为参数时,也是值传递注意形参的类型是指针。形参也是变量main(){intx,y;x=20;y=funx(&x);......}intfunx(int*s){.......}七、函数7.5特殊类型的参数(1)指针作为参数输出是什么?main(){intx,*u,*v;x=20;u=&x;fx(u);printf("%d\n",x);}fx(int*e){*e=30;}30exuv七、函数7.5特殊类型的参数(1)指针作为参数以下程序输出什么?main(){inta=5,b=2;b=yx(&a);printf("%d,%d\n",a,b);}intyx(int*x){intt;t=*x*2;++*x;returnt;}2,5七、函数7.5特殊类型的参数(1)指针作为参数以下程序输出什么?main(){inta=5,b=2;voidyx(int*a,int*b);/*?*/yx(&a,&b);printf("%d,%d\n",a,b);}voidyx(int*a,int*b){/*void表示什么*/intt;t=*a;*a=*b;*b=t;}2,5七、函数7.5特殊类型的参数(1)指针作为参数main(){char*s="abcdef",*q;voidfun1(char*c);/*?*/fun1(s+3);puts(s);}voidfun1(char*c){(*c)++;}abceef七、函数7.5特殊类型的参数(1)指针作为参数返回指针的函数数据类型*函数名(形参列表){函数体return(表达式);}int*abc(int*a,int*b){int*t;if(*a>*b)t=a;elset=b;returnt;}main(){intx=20,y=30,*p;p=abc(&x,&y);printf("%d\n",*p);}七、函数7.5特殊类型的参数(1)指针作为参数main(){char*s="abcdef",*q;char*fun1(char*s);/*?*/q=fun1(s);printf("%c%c\n",*s,*q)}char*fun1(char*s){while(*s)s++;s--;returns;}af七、函数7.5特殊类型的参数(1)指针作为参数返回指针的函数数据类型*函数名(形参列表){函数体return(表达式);}对于函数char*abc(inta,charb){……}以下调用是否正确?(A)printf("%s",abc(5,60));(B)inta;……a=abc(6,'p');(C)chars[10];……s=abc('6','7');(D)char*e;……abc(e,e+1);对错,函数值类型不符错,s是常量错,参数类型不符七、函数7.5特殊类型的参数(1)指针作为参数返回指针的函数数据类型*函数名(形参列表){函数体return(表达式);}对于调用inta,*b;char*x,s[100],c;……c=fun(24,s[5],s+7,*b);请写出函数fun的函数头charfun(intx,chary,char*z,intw)七、函数7.5特殊类型的参数(1)指针作为参数(2)数组作为参数先看一个例子main(){inta[5]={1,2,3,4,5},i;int*x=a;x[2]=10;for(i=0;i<5;i++)printf("%d",a[i]);}121045七、函数数组作为参数看似将整个数组传递给函数,而且可以在函数中改变数组。分析输出结果main(){inta[5]={1,2,3,4,5},i;voidfun2(inta[]);fun2(a)for(i=0;i<5;i++)printf("%d",a[i]);}voidfun2(inty[]){y[2]=9;y[3]=y[1]-y[4];}129-35实际上数组传递时只是传递一个首地址的值。形参inty[]相当于int*yvoidfun2(int*y){*(y+2)=9;*(y+3)=*(y+1)-*(y+4);}七、函数分别用数组和指针的方法编写一个函数,删除一个字符串中的第一个字符。voiddelf(chars[]){inti;for(i=0;s[i];i++)s[i]=s[i+1];}voiddelf(char*s){char*p;for(p=s;*p;p++)*p=*(p+1);}七、函数用数组法:编写一个函数,求一个字符在一个字符串中的第一次出现的位置(下标),如果不出现,返回-1。用指针法:编写一个函数,求一个字符在一个字符串中的第一次出现的位置(指针),如果不出现,返回NULL。intfindf(chars[],charc){inti;for(i=0;s[i];i++)if(c==s[i])returni;return–1;}intfindf(char*s,charc){char*p;for(p=s;*p;p++)if(c==*p)returnp;returnNULL;}七、函数7.5特殊类型的参数(1)指针作为参数(2)数组作为参数(3)结构体作为参数结构体变量作为参数就如同整数、实数一样。structst{inta;charb};main(){structstc,d;structstfun3(structsta);/*?*/c.a=8;c.b='k';d=fun3(c);printf(%d,%c\n",d.b,d.a);}structstfun3(structsta){a.a++;returna;}k,9七、函数7.5特殊类型的参数(1)指针作为参数(2)数组作为参数(3)结构体作为参数结构体变量作为参数就如同整数、实数一样。structst{inta;charb};typedefstructstST;main(){STc,d;STfun3(structsta);/*?*/c.a=8;c.b='k';d=fun3(c);printf(%d,%c\n",d.b,d.a);}STfun3(STa){a.a++;returna;}七、函数7.5特殊类型的参数7.6指向函数的指针C语言编译后的二进制程序在运行时要读入内存。一个函数中的语句在内存中连续存放,函数名代表首地址。可以定义指向函数的指针变量。如int(*p)();定义一个指针变量p,它的值是某一个函数的首地址。int表示函数类型。main(){char(*p)();p=fun1;p=fun2;...}charfun1(inta,floatb){....}charfun2(char*s){...}七、函数7.5特殊类型的参数7.6指向函数的指针C语言编译后的二进制程序在运行时要读入内存。一个函数中的语句在内存中连续存放,函数名代表首地址。可以定义指向函数的指针变量。如int(*p)();定义一个指针变量p,它的值是某一个函数的首地址。int表示函数类型。main(){charx,y;char(*p)();p=fun1;x=(*p)(3,0.4);/*x=fun1(3,0.4);*/p=fun2;y=(*p)("abc");/*y=fun2("abc");*/...}charfun1(inta,floatb){....}charfun2(char*s){...}七、函数7.5特殊类型的参数7.6指向函数的指针C语言编译后的二进制程序在运行时要读入内存。一个函数中的语句在内存中连续存放,函数名代表首地址。可以定义指向函数的指针变量。如int(*p)();定义一个指针变量p,它的值是某一个函数的首地址。int表示函数类型。以下程序有什么错误?main(){char(*p)();p=fun1();p=fun2;...}charfun1(inta,floatb){....}intfun2(char*s){...}多括号类型不符七、函数7.5特殊类型的参数7.6指向函数的指针C语言编译后的二进制程序在运行时要读入内存。一个函数中的语句在内存中连续存放,函数名代表首地址。可以定义指向函数的指针变量。如int(*p)();定义一个指针变量p,它的值是某一个函数的首地址。int表示函数类型。以下程序有什么错误?main(){charx,y;char(*p)();p=fun1;x=*p(3,0.4);/*x=fun1(3,0.4);*/p=fun2;y=*p("abc");/*y=fun2("abc");*/...}charfun1(inta,floatb){....}charfun2(char*s){...}*p应写成(*p)七、函数7.5特殊类型的参数7.6指向函数的指针7.7命令行参数main(intargc,char*argv[])main(intargc,char**argv)main(intargnum,char**arg)第一个形参表示参数个数(包括程序名)第二个形参是字符串数组,每一个字符串表示一个参数。以下程序可以显示程序名及各个参数:(运行演示)main(intargc,char**argv){printf("thefilename:%s",argv[0]);printf("\nand%darguments:\n",argc-1);while(--argc>0)puts(*(++argv));}七、函数7.5特殊类型的参数7.6指向函数的指针7.7命令行参数main(intargc,char*argv[])main(intargc,char**argv)main(intargnum,char**arg)第一个形参表示参数个数(包括程序名)第二个形参是字符串数组,每一个字符串表示一个参数。以下程序用于复制文件,文件名由命令行输入:main(intargc,char**argv){FILE*f1,*f2;charc;if(argc!=3){printf("参数不对");exit(0);}if((f1=fopen(argv[1],"rb"))==NULL)exit(0);if((f2=fopen(argv[2],"wb"))==NULL)exit(0);while(!feof(f1)){c=fgetc(f1);fputc(c,f2);}fclose(f1);fclose(f2);}七、函数7.5特殊类型的参数7.6指向函数的指针7.7命令行参数main(intargc,char*argv[])main(intargc,char**argv)main(int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院控烟工作实施方案(5篇)
- 雨季施工防水材料应用措施
- 加盟培训学校合同标准文本
- 加梯合同样本
- 甘肃省农业区农地经营规模对环境效率的影响及优化对策
- 商业办公楼保洁服务风险防范措施
- 大众点评APP用户持续使用意愿影响因素研究
- 驾驶员培训教育
- 牦牛与黄牛胎牛高海拔低氧适应性转录组特性研究
- 2024-2025学年度学校学生评估工作计划
- JTG F90-2015 公路工程施工安全技术规范
- 新能源汽车行业智能驾驶技术分析报告
- 统编版高中语文必修下册理解性默写练习题汇编(含答案)
- 林木种质资源调查表(新表)
- 特种兵作战分析报告
- 8.1.2样本相关系数(教学设计)高二数学(人教A版2019选择性)
- 神经性疼痛的病因和治疗
- DB11T 381-2023既有居住建筑节能改造技术规程
- 人事档案管理标准
- GB/T 31402-2023塑料和其他无孔材料表面抗菌活性的测定
- 体验式服务设计
评论
0/150
提交评论