C-将结构传递给函数

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

在本教程中,我们将学习将结构传递给使用C编程语言的函数。

在"结构和数组"教程中,我们学习了如何创建结构数组。
在本教程中,我们将使用其中一些概念。
因此,请随时回顾上一教程。

让我们开始吧...

要将结构传递给函数,我们必须正确声明函数参数列表。

在下面的示例中,我们将创建一个"学生"结构。

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

现在,假设我们要创建一个" displayDetail()"函数,该函数将student结构变量作为参数并打印详细信息。

为此,我们必须首先声明" displayDetail()"函数。

以结构为参数的函数声明的语法

以下是接受结构变量作为参数的函数声明语法。

returnType functionName(struct tagName argName);

例:

void displayDetail(struct student std);

在上面的代码中,我们声明了一个名为" displayDetail"的函数。
该函数的返回类型设置为" void",这意味着该函数将不返回任何值。

在参数列表中,我们具有"结构学生"类型的"标准"。
这意味着std是学生结构的变量。
因此,函数" displayDetail"可以将student结构类型的任何变量作为参数。

将结构变量传递给函数

要将结构变量传递给函数,我们要做的就是写出变量的名称,它将传递结构变量的副本。

在以下示例代码中,我们将类型为" student"结构的" stdArr [i]"变量传递给" displayDetail"函数。

displayDetail(stdArr[i]);

用C编写一个程序,将3名学生的详细信息作为输入,并通过将结构传递给函数来显示结果

#include <stdio.h>

//creating a student structure template
struct student {
  char firstname[64];
  char lastname[64];
  char id[64];
  int score;
};
  
//function declaration
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));

    printf("Enter First Name: ");
    scanf("%s", stdArr[i].firstname);
  
    printf("Enter Last Name: ");
    scanf("%s", stdArr[i].lastname);
  
    printf("Enter ID: ");
    scanf("%s", stdArr[i].id);
  
    printf("Enter Score: ");
    scanf("%d", &stdArr[i].score);
  }
  
  //output
  for (i = 0; i < 3; i++) {
    printf("\nStudent #%d Detail:\n", (i+1));
    displayDetail(stdArr[i]);
  }
  
  return 0;
}

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