- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 指针3(周)
Functions and Program Structure 5.5 指针作为函数参数 void Swap(int x,int y) { int temp; temp = x; x = y; y = temp; } swap函数的几种错误形式(1/3) 参数单向传递 void Swap(int x, int y) { int temp; temp = x; /*x,y为内部变量*/ x = y; y = temp; } swap函数的几种错误形式(2/3) 参数单向传递 void Swap(int *p1, int *p2) { int *p; p = p1; /* p1, p2为内部变量*/ p1 = p2; p2 = p; } swap函数的几种错误形式(3/3) 指针p没有确切地址 void Swap(int *p1, int *p2) { int *p; /*指针p未初始化*/ *p = *p1; *p1 = *p2; *p2 = *p; } 传地址调用和传值调用 传(地)址调用:将被调函数的形式参数说明成指针形式,在调用函数中,将实参的地址传递给形参。属于双向参数传递。 传值调用:被调函数的形式参数是普通类型,在调用函数中,将实参的值拷贝给形参。因为实参和形参占用各自的内存单元(在各自的栈空间中),互不干扰,被调函数中对形参值的改变不会改变实参的值。属于单向数据传递方式。 二维数组的指针作函数参数 用指向变量的指针变量 用指向一维数组的指针变量 用二维数组名 5.6 函数返回值为指针的函数 【例5-16】编写一个函数,从键盘输入一批数据保存到一个数组之中,函数返回数组的首地址。 int *getdata2(int n) { int i; static int a[100]; for(i=0;in;i++) scanf(%d,a[i]); return a; } 【例5-16】编写一个函数,从键盘输入一批数据保存到一个数组之中,函数返回数组的首地址。 int *getdata1 (int n) { int i,a[100]; for(i=0;in;i++) scanf(%d,a[i]); return a; } 5.7指向函数的指针 int f1(int x,int y) { int z; z=(x=y)?x:y; return z; } int f2 (int a,int b, int c) { return (a+b+c); } 5.8 void型指针 void用于函数返回类型,表示函数不返回任何值。 void main() void用于指针定义。 void *ptr; 指针ptr可以指向任意类型数据的存储地址 void类型指针在使用时需注意 其它类型指针(如int *,float *等)可以直接赋值给void型指针; void型指针赋值给其它有类型指针时,必须进行强制类型转换。 这一章我们学习了 指针的概念 指针是一种特殊的数据类型 指针与数组之间的关系 掌握二维数组在内存中的存放方式,是理解二维数组的行指针和列指针的关键 指针的应用 做函数参数,传地址调用 动态分配内存,实现动态数组 常见的指针应用中容易出现的错误 * * void Swap(int *x,int *y) { int temp; temp = *x; *x = *y; *y = temp; } main() { int a, b; a = 15; b = 8; Swap( a, b ); printf(a=%d,b=%d,a,b); } main() { int a, b; a = 15; b = 8; Swap(a, b); printf(a=%d,b=%d,a,b); } 程序 1 程序 2 主调函数 被调 函数 实 参 形 参 结果有何不同? 主调函数 被调函数 main() { int a, b; a = 15; b = 8; Swap(a, b); printf(a=%d,b=%d,a,b); } void Swap(int x, int y) { int temp; temp = x; x = y; y = temp; } 15 15 a b 实 参 形 参 8 8 x y a b 程序 1 x y 主调函数 被调函数 main(
您可能关注的文档
最近下载
- Burberry 品牌延展手册【奢侈品】【品牌手册】.docx
- 计量经济学实验教程(终稿).pdf VIP
- 2025中华护理学会团体标准——抗肿瘤药物静脉给药技术.pptx
- 精品解析:天津市静海区瀛海学校2025-2026学年高二上学期11月月考数学试卷(原卷版).docx VIP
- 中华人民共和国国家标准声学家用电器及类似用途器具噪声测试方法 .pdf VIP
- 邻菲罗啉分光光度法测定铁一.pptx VIP
- 金属塑性变形理论-第8讲变形不均匀概念.pdf VIP
- 精品解析:天津市静海区瀛海学校2025-2026学年高二上学期11月月考数学试卷(解析版).docx VIP
- 资产管理公司员工保密协议.docx VIP
- 线性规划课件.pptx VIP
原创力文档


文档评论(0)