有关c语言结构体 值传递 给函数的一个问题
小甲鱼在带你学c里面的一个值传递让我有点疑惑{:10_243:}我把我写的和甲鱼大大的都贴出来。
我是这样写的,也是成功的:
#include <stdio.h>
#include <stdlib.h>
struct Book getInput(void);
struct Date
{
int year;
int month;
int day;
};
struct Book
{
char name;
char title;
float price;
struct Date date;
};
struct Book getInput(void)//《《《《《《《《《《疑惑点《《《《《《《《《《《《《
{
struct Book book;
printf("请输入书名:");
scanf("%s",book.title);
printf("请输入姓名:");
scanf("%s",book.name);
printf("请输入售价:");
scanf("%f",&book.price);
printf("请输入日期:");
scanf("%d%d%d",&book.date.year,&book.date.month,&book.date.day);
return book;
}
void printBook(struct Book book)//将结构体变量 值传递 给指针会使开销变大。
{
printf("name:%s\n",book.name);
printf("title:%s\n",book.title);
printf("price:%f\n",book.price);
printf("date:%d%d%d\n",book.date.year,book.date.month,book.date.day);
}
int main(void) {
struct Book b1,b2;
printf("请输入第一本书的信息》》》\n");
b1=getInput();
putchar('\n');
printf("请输入第二本书的信息》》》\n");
b2=getInput();
putchar('\n');
printf("你的录入:\n");
printBook(b1);
printBook(b2);
return 0;
}
甲鱼老师是这样写的,但我不知道为什么要把b1值传递给函数{:10_277:},解释不通啊aaa:
#include <stdio.h>
#include <stdlib.h>
struct Book getInput(struct Book book);
struct Date
{
int year;
int month;
int day;
};
struct Book
{
char name;
char title;
float price;
struct Date date;
};
struct Book getInput(struct Book book)//《《《《《《《《《《《疑惑点《《《《《《《《《
{
printf("请输入书名:");
scanf("%s",book.title);
printf("请输入姓名:");
scanf("%s",book.name);
printf("请输入售价:");
scanf("%f",&book.price);
printf("请输入日期:");
scanf("%d%d%d",&book.date.year,&book.date.month,&book.date.day);
return book;
}
void printBook(struct Book book)//将结构体变量 值传递 给指针会使开销变大。
{
printf("name:%s\n",book.name);
printf("title:%s\n",book.title);
printf("price:%f\n",book.price);
printf("date:%d%d%d\n",book.date.year,book.date.month,book.date.day);
}
int main(void) {
struct Book b1,b2;
printf("请输入第一本书的信息》》》\n");
b1=getInput(b1); //《《《《《《《《《《疑惑点《《《《《《《《《《《《《
putchar('\n');
printf("请输入第二本书的信息》》》\n");
b2=getInput(b2);//《《《《《《《《《《疑惑点《《《《《《《《《《《《《
putchar('\n');
printf("你的录入:\n");
printBook(b1);
printBook(b2);
return 0;
}
我也不知道怎么回答,只能说都可以,没毛病,我感觉没必要疑惑! 还是想知道一下{:10_272:} 我懂了,甲鱼大大的这个代码,把b1值传递给函数局部变量book,同时定义了一个Book结构体类型并且把b1的值传进去了。
又因为接下去的赋值语句把原b1的值覆盖掉了所以相当于就是只起到定义Book结构体类型的作用。
我的那句就是单纯的定义Book结构体类型,所以两个作用其实一样。{:10_267:} greenery 发表于 2020-9-27 17:56
我懂了,甲鱼大大的这个代码,把b1值传递给函数局部变量book,同时定义了一个Book结构体类型并且把b1的值传 ...
对啊 还有你要点回复,不然我收不到,我碰巧看到了,不然我都不知道你还发了消息
页:
[1]