<C语言>结构体的参数传递和指针传递(注释详解)
2017-08-14 19:27
573 查看
本文包括两个版本,都讲到了参数传递和指针传递,作者水平有限,如有不足之处,敬请指正!
一、
二、
一、
//<<<<<<<结构体的参数传递和指针传递>>>>>>> //作者:wsg //时间:2017年8月14日 //版本一:皆采用函数返回值为整个结构体的方式 #include <stdio.h> struct gas { float distance; float gals; float mpg; //题目定义:mpg = distance * gals }; struct gas func1(struct gas str); //申明函数func1() struct gas func2(struct gas *ptr); //申明函数func2() int main(int argc, char *argv[]) { //定义并输入distance的值 float distance; printf("请输入distance的值(带小数):\n"); scanf("%f", &distance); //定义并输入gals的值 float gals; printf("请输入gals的值(带小数):\n"); scanf("%f", &gals); //将distance的值和gals的值(float型)赋给结构体str struct gas str = {.distance = distance, .gals = gals}; //func1()函数传参,传递整个结构体 str = func1(str); printf("mpg1 = %f\n", str.mpg); //打印mpg的值 //func2函数传参,传递一个地址进去,这里传递整个结构体的地址 str = func2(&str); printf("mpg2 = %f\n", str.mpg); //打印mpg的值 return 0; } //定义函数func1(),形参为整个结构体,返回值也为整个结构体 struct gas func1(struct gas str) { str.mpg = (str.distance)*(str.gals); return str; //返回值为整个结构体 } //定义函数func2(),形参为一个指针,应传递一个地址 struct gas func2(struct gas *ptr) { ptr->mpg = (ptr->distance)*(ptr->gals); return *ptr; //返回值为指针ptr解引用,相当于整个结构体 }
二、
//<<<<<<<结构体的参数传递和指针传递>>>>>>> //作者:wsg //时间:2017年8月14日 //版本二:使用指针传递时,不采用返回值方式 #include <stdio.h> struct gas { float distance; float gals; float mpg; //mpg = distance * gals }; struct gas func1(struct gas str); void func2(struct gas *ptr); int main(int argc, char *argv[]) { //输入distance的值 float distance; printf("请输入distance的值:\n"); scanf("%f", &distance); //输入gals的值 float gals; printf("请输入gals的值:\n"); scanf("%f", &gals); //将distance的值和gals的值赋给结构体str struct gas str = {.distance = distance, .gals = gals}; //func1函数传参 str = func1(str); printf("mpg1 = %f\n", str.mpg); //函数func2传参 func2(&str); return 0; b343 } //定义函数func1(),形参为整个结构体,返回值也为整个结构体 struct gas func1(struct gas str) { str.mpg = (str.distance)*(str.gals); return str; } //定义函数func2(),形参为一个指针,应传递一个地址,由于该函数是void类型,所以没有返回值 void func2(struct gas *ptr) { ptr->mpg = (ptr->distance)*(ptr->gals); printf("mpg2 = %f\n", ptr->mpg); //无返回值,只能在函数内部打印,而不能在main函数里打印 }
相关文章推荐
- <C语言>结构体的各种定义、初始化、操作代码实例----注释详解
- 黑马程序员--C语言之指针<二>
- <C语言>关于函数返回值是指针,取不到值的问题研究
- C语言为什么要加#include<stdio.h>(C语言基础结构知识)
- <C语言>数组与指针详细知识点(全)
- 数据结构与算法(C语言)<绪论>
- C语言指针教程----入门到精通<二>
- Android目录结构(详解)<摘录>
- C语言<四> 函数与程序结构
- 程序猿之---C语言细节22(函数返回指针注意事项<悬空指针>、查看进程可以分配的内存大小)
- 通过HTML条件注释判断IE版本的HTML语句详解<!--[if IE]> <![endif]-->
- 黑马程序员--C语言之指针<一>
- C语言指针教程----入门到精通<一>
- 黑 马 程 序 员_视频学习总结<C语言>----03 指针
- <C语言>“指针数组与数组指针+指针函数与函数指针”---区别理解
- Android智能指针详解 <转自 来源:Linux社区 作者:李枝果>
- 详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)
- c语言 传递结构指针案例
- <学习笔记>Windows驱动技术开发详解__驱动程序的基本结构
- C语言中 值传递和指针传递实例详解