C - 从不同的函数访问结构变量

标签 c data-structures struct

我正在尝试在一个函数中声明一个变量(结构类型),并从其他函数中对其进行操作(读/写)。但是,当我尝试在任何不是我声明它的地方的函数中使用该变量时,它只包含垃圾。

这是我的代码:

    #include <stdio.h>
    #include <stdlib.h>

    typedef struct
      char name[25];
      int roll;
      float marks;  
    }Student;

    void getInfo(Student student);
    void display(Student student);

    int main(int argc, char *argv[]) {
      Student student;
      getInfo(student);
      display(student);
      return 0;
    }

    void getInfo(Student student){
      printf("Enter student's name: \n");
      scanf("%s", &student.name);
      printf("Enter student's roll: \n");
      scanf("%d", &student.roll);
      printf("Enter student's grade: \n");
      scanf("%f", &student.marks);
    }

    void display(Student student){
      printf("NAME: %s\n", student.name);
      printf("ROLL: %d\n", student.roll);
      printf("GRADE: %.2f\n", student.marks);
    }

最佳答案

您应该通过引用( & 运算符)传递您的结构

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    char name[25];
    int roll;
    float marks;    
} Student;

void getInfo(Student *student);
void display(Student *student);

int main(int argc, char *argv[]) {
    Student student;
    getInfo( &student );
    display( &student );
    return 0;
}

void getInfo(Student *student){
    printf("Enter student's name:");
    scanf("%s", student->name);
    printf("Enter student's roll:");
    scanf("%d", &student->roll);
    printf("Enter student's grade:");
    scanf("%f", &student->marks);
}

void display(Student *student){
    printf("NAME: %s\n", student->name);
    printf("ROLL: %d\n", student->roll);
    printf("GRADE: %.2f\n", student->marks);
}

演示:https://repl.it/repls/LowNonstopWeb

关于C - 从不同的函数访问结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54971567/

相关文章:

c - 字节似乎被转移了

algorithm - 在 O(n) 时间内将堆转换为 BST?

c - C 的结构中的 "Inheritance"?

c++ - 将内存中的树结构表示为缓存的最佳方法是什么?

Golang 运算符重载

c - 结构节点释放

用新指针构造字符串并重新分配给原始指针

为 int 和 int 转换为 float

c - 上次迭代的段错误

c - 如何打印结构体的成员?