C 结构体和函数
在本教程中,您将学习将结构变量作为参数传递给函数。您将学习借助示例从函数返回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.5result.real = 15.7
result.imag = -7.9
在上面的程序中,三个结构变量c1,c2和结果的地址传递给addNumbers()函数。 在这里,结果通过引用传递。
当addNumbers()内部的结果变量被更改时,main()函数内部的结果变量也被相应地更改。