返回

结构体作为函数参数

发布时间:2022-12-13 03:42:42 396
# 数据# 软件# 信息# 软件

 结构体宏观上可以当做变量看待,可以作为函数参数,也可以作为函数返回值。再软件编程上的使用,可以与C++的类,封装的功能平分天下。

将一个结构体变量中的数据传递给另一个函数,有下列3种方法:

用结构体变量名作参数。一般较少用这种方法。

用指向结构体变量的指针作实参,将结构体变量的地址传给形参。

用结构体变量的引用变量作函数参数。

 

案例说明:

  有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为各成员赋值,在另一函数print中将它们的值输出。

 1) 用结构体变量作函数参数。

Student stu; //定义结构体变量             
print(stu); //调用print函数,输出stu各成员的值
//void print(Student st)

 

结论:用结构体变量作实参和形参,程序直观易懂,效率是不高的。

 

2)用指向结构体变量的指针作实参 

Student stu; //定义结构体变量  
Student *pt=&stu; //定义基类型为Student的指针变量pt,并指向stu
print(pt); //实参为指向Student类数据的指针变量
// void print(Student *p)

结论:采用指针变量作为实参和形参,空间和时间的开销都很小,效率较高。没有(1)的直观。

 

3) 用结构体变量的引用作函数参数

Student stu; //定义结构体变量
print(stu);
//void print(Student &stud)

结论:实参是结构体Student类型变量,而形参用Student类型的引用,虚实结合时传递的是stu的地址,因而效率较高。它兼有(1)和(2)的优点。

 

其实与变量是一样的,值传递、指针、引用。

 

如下,指针操作获取信息:

StudentInfo stuOne;
memset(stuOne,0,sizeof(StudentInfo));
iRetValue = getStudentInfo(&stuOne); // 调用函数
if (iRetValue ==OK) printf(“pass\r\n”);
//调用函数
INT32 getStudentInfo(StudentInfo *pStudentInfo)
{
// 先对输入的指针参数进行异常判断
if (pStudentInfo == NULL) return;
strncpy((char *)pStudentInfo, Stu, sizeof(StudentInfo)); // 赋值操作
return 0; // 赋值成功, 返回0
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
由无线热点的桥接说说原理 2022-12-13 03:23:29