在本教程中,您将学习将结构变量作为参数传递给函数。您将学习借助示例从函数返回struct的方法。
与内置类型的变量类似,您也可以将结构变量传递给函数。
我们建议您在学习如何将结构传递给函数之前先学习这些教程。
这是将结构传递给函数的方法
#include <stdio.h> struct student { char name[50]; int age; }; //函数原型 void display(struct student s); int main() { struct student s1; printf("输入姓名: "); //读取用户输入的字符串,直到输入\ n // \ n被丢弃 scanf("%[^\n]%*c", s1.name); printf("输入年龄: "); scanf("%d", &s1.age); display(s1); //将struct作为参数传递 return 0; } void display(struct student s) { printf("\n显示信息\n"); printf("姓名: %s", s.name); printf("\n年龄: %d", s.age); }
输出结果
输入姓名: Bond 输入年龄: 13 显示信息 姓名: Bond 年龄: 13
在这里,创建了struct student类型的struct变量s1。 使用display(s1)将变量传递给display()函数声明。
这是从函数返回结构的方法:
#include <stdio.h> struct student { char name[50]; int age; }; //函数原型 struct student getInformation(); int main() { struct student s; s = getInformation(); printf("\n显示信息\n"); printf("Name: %s", s.name); printf("\nRoll: %d", s.age); return 0; } struct student getInformation() { struct student s1; printf("输入姓名: "); scanf ("%[^\n]%*c", s1.name); printf("输入年龄: "); scanf("%d", &s1.age); return s1; }
在这里,使用s = getInformation()来调用getInformation()函数声明。 该函数返回struct学生类型的结构。 在main()函数中显示返回的结构。
注意,getInformation()的返回类型也是struct student。
您还可以按引用传递结构(就像您按引用传递内置类型的变量一样)。我们建议您在继续之前阅读参考指南。
在按引用传递期间,结构变量的内存地址将传递给函数。
#include <stdio.h> typedef struct Complex { float real; float imag; } complex; void addNumbers(complex c1, complex c2, complex *result); int main() { complex c1, c2, result; printf("输入第一个数:\n"); printf("输入实部: "); scanf("%f", &c1.real); printf("输入虚部: "); scanf("%f", &c1.imag); printf("输入第二个数: \n"); printf("输入实部: "); scanf("%f", &c2.real); printf("输入虚部: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("\nresult.real = %.1f\n", result.real); printf("result.imag = %.1f", result.imag); return 0; } void addNumbers(complex c1, complex c2, complex *result) { result->real = c1.real + c2.real; result->imag = c1.imag + c2.imag; }
输出结果
输入第一个数: 输入实部: 5.8 输入虚部: -3.4 输入第二个数: 输入实部: 9.9 输入虚部: -4.5 result.real = 15.7 result.imag = -7.9
在上面的程序中,三个结构变量c1,c2和结果的地址传递给addNumbers()函数。 在这里,结果通过引用传递。
当addNumbers()内部的结果变量被更改时,main()函数内部的结果变量也被相应地更改。