こんにちは友達私は構造を練習しています。私はこれらの2つの関数を持っており、1つは構造体を返し、それをmainのローカル構造体にコピーします。2番目の関数は、さまざまなエンティティを入力して、これらのローカル構造体メンバーを変更します。これで、各関数を呼び出した後に結果を印刷しました。驚いたことに、両方の関数の後で印刷された結果が同じであることに気付きました。ここで何が起こっているのか理解できません…皆さん、説明してもらえますか…ありがとう!
#include <stdio.h>
#include <stdlib.h>
struct student{
char name[30];
float marks;
};
struct student read_student();
void read_student_p(struct student student3);
void print_student(struct student student2);
int main()
{
struct student student1;
student1 = read_student();
print_student(student1);
read_student_p(student1);
print_student(student1);
system("pause");
return 0;
}
//This is my first function
struct student read_student()
{
struct student student2;
printf("enter student name for first function: \n");
scanf("%s",&student2.name);
printf("enter student marks for first function:\n");
scanf("%f",&student2.marks);
return student2;
}
//function to print
void print_student(struct student my_student)
{
printf("Student name in first function is : %s\n",my_student.name);
printf("Student marks in first function are: %f\n",my_student.marks);
};
//My second function
void read_student_p(struct student student3)
{
printf("enter student name for second function: \n");
scanf("%s",&student3.name);
printf("enter student marks for second function: \n");
scanf("%f",&student3.marks);
}