C-函数返回结构

时间:2020-02-23 14:31:55  来源:igfitidea点击:

在本教程中,我们将学习使用C编程语言从函数返回结构。

在上一教程中,我们学习了如何将结构传递给函数。
如果您想回顾一下,请随时检查。

首先让我们创建一个"学生"结构。

struct student {
  char firstname[64];
  char lastname[64];
  char id[64];
  int score;
};

在本教程中,我们将创建一个函数,该函数将返回" student"结构类型的变量。

函数声明返回结构的语法

以下是将返回结构的函数声明的语法。

returnType functionName(dataType paramName, ...);

例:

struct student getDetail(void);

在上面的示例中,我们有一个名为" getDetail"的函数。
参数列表设置为" void",这意味着此函数不接受任何参数。

该函数的返回类型是" struct student"类型,这意味着它将返回一个" student structure"类型的值。

用C语言编写一个程序,将3个学生的详细信息作为输入,并使用函数打印详细信息

在下面的示例中,我们使用两个函数" getDetail"获取学生详细信息,并使用" displayDetail"显示学生详细信息。

#include <stdio.h>

//creating a student structure template
struct student {
  char firstname[64];
  char lastname[64];
  char id[64];
  int score;
};
  
//function declaration
struct student getDetail(void);
void displayDetail(struct student std);

int main(void) {
  
  //creating a student structure array variable
  struct student stdArr[3];
  
  //other variables
  int i;
  
  //taking user input
  for (i = 0; i < 3; i++) {
    printf("Enter detail of student #%d\n", (i+1));
    stdArr[i] = getDetail();
  }
  
  //output
  for (i = 0; i < 3; i++) {
    printf("\nStudent #%d Detail:\n", (i+1));
    displayDetail(stdArr[i]);
  }
  
  return 0;
}

struct student getDetail(void) {
  //temp structure variable
  struct student std;
  
  printf("Enter First Name: ");
  scanf("%s", std.firstname);
  
  printf("Enter Last Name: ");
  scanf("%s", std.lastname);
  
  printf("Enter ID: ");
  scanf("%s", std.id);
  
  printf("Enter Score: ");
  scanf("%d", &std.score);
  
  return std;
}

void displayDetail(struct student std) {
  printf("Firstname: %s\n", std.firstname);
  printf("Lastname: %s\n", std.lastname);
  printf("ID: %s\n", std.id);
  printf("Score: %d\n", std.score);
}
Enter detail of student #1
Enter First Name: Bruce
Enter Last Name: Wayne
Enter ID: dc-01
Enter Score: 8
Enter detail of student #2
Enter First Name: Peter
Enter Last Name: Parker
Enter ID: mc-01
Enter Score: 9
Enter detail of student #3
Enter First Name: Tony
Enter Last Name: Stark
Enter ID: mc-02
Enter Score: 7

Student #1 Detail:
Firstname: Bruce
Lastname: Wayne
ID: dc-01
Score: 8

Student #2 Detail:
Firstname: Peter
Lastname: Parker
ID: mc-01
Score: 9

Student #3 Detail:
Firstname: Tony
Lastname: Stark
ID: mc-02
Score: 7