-1

如何将内部具有结构的用户定义函数“add()”传递给C中的main()函数?

#include<stdio.h>
struct student
{
    char *name;
    int age;
    float per;
};
void add(){
    struct student o,o2;
}
int main()
{
    // struct student o,o2;
    add();
    o.name="Jay";
    o.age=30;
    o.per=85.5;
    o2.name="Shine";
    o2.age=22;
    o2.per=99;
    printf("\nName        : %s",o.name);
    printf("\nAge         : %d",o.age);
    printf("\nPercent     : %f",o.per);
    printf("\n--------------------------------\n");
    printf("\nName        : %s",o2.name);
    printf("\nAge         : %d",o2.age);
    printf("\nPercent     : %f",o2.per);
 
    return 0;
}

如果执行上述程序,则会引发错误。但是我们已经在 add() 中声明了这个结构。所以如果我们在 main 函数中调用 add 它应该运行结构吗?为什么会抛出错误?

type-1 和 type-2 有什么区别?1型

void add(){
    struct student o,o2;
}

2型

void add(struct student o,o2);
4

1 回答 1

0
#include<stdio.h>
void add();
struct student
{
    char *name;
    int age;
    float per;
};
struct student o,o2;
void add(){
    struct student o,o2;
}
int main()
{

    // struct student o,o2;
    add();
    o.name="Jay";
    o.age=30;
    o.per=85.5;
    o2.name="Shine";
    o2.age=22;
    o2.per=99;
    printf("\nName        : %s",o.name);
    printf("\nAge         : %d",o.age);
    printf("\nPercent     : %f",o.per);
    printf("\n--------------------------------\n");
    printf("\nName        : %s",o2.name);
    printf("\nAge         : %d",o2.age);
    printf("\nPercent     : %f",o2.per);
 
    return 0;
}

output:-

Name        : Jay
Age         : 30
Percent     : 85.500000
--------------------------------

Name        : Shine
Age         : 22
Percent     : 99.000000

1.你没有声明void add()函数。

  1. 您忘记在struct student o,o2全球范围内声明。

type1:-

void add(){
    struct student o,o2;
}

在您将结构传递给函数之前,此函数什么都不做。像type2。

type2:-

   void add(struct student o,o2);

在这种情况下,整个结构按值传递给另一个函数。这意味着整个结构与所有成员及其值一起传递给另一个函数。所以,这个结构可以从被调用的函数中访问。这个概念在用 C 编写非常大的程序时非常有用。

于 2021-11-11T14:42:20.777 回答