📜  如何在C C ++中的函数传递结构或从中返回结构?(1)

📅  最后修改于: 2023-12-03 15:08:51.791000             🧑  作者: Mango

如何在C/C++中的函数传递结构或从中返回结构?

在C/C++中,结构是一种用户自定义的数据类型,它可以包含多个不同类型的成员变量。结构可以用于将多个相关的变量组合在一起以便于管理和传递。在本文中,我们将讨论如何在C/C++中的函数传递结构或从中返回结构。

在C中传递结构

在C中,结构是一种用户自定义的数据类型。我们可以通过定义一个结构来表示一组相关的数据。

struct student {
    char name[20];
    int age;
    float marks;
};

在定义了一个结构后,可以使用它来声明结构变量并操作它:

struct student s1;
s1.age = 20;
strcpy(s1.name, "John");
s1.marks = 85.5;

要在函数中传递结构,我们需要将整个结构传递给函数,或者将结构的指针传递给函数。下面是一个函数,它使用结构作为参数:

void print(struct student s) {
    printf("Name: %s\n", s.name);
    printf("Age: %d\n", s.age);
    printf("Marks: %.2f\n", s.marks);
}

这个函数将一个学生的结构作为参数,并打印出结构中的数据。你可以像下面这样调用这个函数:

struct student s1 = {"John", 20, 85.5};
print(s1);

这将输出:

Name: John
Age: 20
Marks: 85.50
在C中返回结构

在C中,我们也可以从函数返回结构。为了返回一个结构,我们需要将结构作为函数的返回值。

struct student getStudent() {
    struct student s = {"John", 20, 85.5};
    return s;
}

这个函数将返回一个表示学生的结构。你可以像下面这样调用这个函数:

struct student s1 = getStudent();
printf("Name: %s\n", s1.name);
printf("Age: %d\n", s1.age);
printf("Marks: %.2f\n", s1.marks);

这将输出:

Name: John
Age: 20
Marks: 85.50
在C++中传递结构

在C++中,结构和C中的结构非常相似,但是它们可以包含方法(也称为函数)。同样,我们可以使用结构来表示一组相关的数据。

struct student {
    char name[20];
    int age;
    float marks;
    
    void print() {
        cout << "Name: " << name << endl;
        cout << "Age: " << age << endl;
        cout << "Marks: " << fixed << setprecision(2) << marks << endl;
    }
};

在定义了一个结构后,我们可以使用它来声明结构变量并操作它,就像在C中一样:

student s1;
s1.age = 20;
strcpy(s1.name, "John");
s1.marks = 85.5;

要在函数中传递结构,我们可以使用结构的引用或指针作为函数参数。下面是一个函数,它使用结构作为引用参数:

void print(student& s) {
    cout << "Name: " << s.name << endl;
    cout << "Age: " << s.age << endl;
    cout << "Marks: " << fixed << setprecision(2) << s.marks << endl;
}

这个函数将一个学生的结构作为引用参数,并打印出结构中的数据。你可以像下面这样调用这个函数:

student s1 = {"John", 20, 85.5};
print(s1);

这将输出:

Name: John
Age: 20
Marks: 85.50

我们也可以使用结构的指针作为函数参数。下面是一个函数,它使用结构指针作为参数:

void print(student* s) {
    cout << "Name: " << s->name << endl;
    cout << "Age: " << s->age << endl;
    cout << "Marks: " << fixed << setprecision(2) << s->marks << endl;
}

这个函数将一个学生的结构指针作为参数,并打印出结构中的数据。你可以像下面这样调用这个函数:

student s1 = {"John", 20, 85.5};
print(&s1);

这将输出:

Name: John
Age: 20
Marks: 85.50
在C++中返回结构

在C++中,我们也可以从函数中返回结构。为了从函数中返回结构,我们可以将结构作为函数的返回值。

student getStudent() {
    student s = {"John", 20, 85.5};
    return s;
}

这个函数将返回一个表示学生的结构。你可以像下面这样调用这个函数:

student s1 = getStudent();
s1.print();

这将输出:

Name: John
Age: 20
Marks: 85.50