wszjb 发表于 2022-9-8 23:12:00

求助

带你学c带你飞里面第44节
void getIput(struct Book *book)
{
.....
}
为什么使用这个自定义函数时
getIput()
的()里面传入&b1

临时号 发表于 2022-9-8 23:18:28

struct Book *book这不是你自己要求传入一个地址吗

编程追风梦 发表于 2022-9-9 06:21:20

对于你这个问题,我也是无语了


你先看看什么是自定义函数:

所有函数都是自定义的,main函数只是名字和参数有所限制。函数你可以把它当成一个机器,比如你扔进去一堆布和棉花,它出来一堆玩偶。那么这台机器名字叫做玩偶制造机输入参数是布和棉花输出是玩偶里面具体的实现,就是怎样把布和棉花做成玩偶。自定义函数按照如下格式返回类型 函数名 (输入参数)
{
具体实现
返回值
}对照刚刚的玩偶类型 玩偶制造机(布, 棉花)
{
玩偶制造过程
返回 玩偶
}我们假设有了这么一个函数vano,作用是输出一个玩偶的成本:int main()
{
printf("这是一个成本为%d的玩偶", vano(12, 13));
return 0;
}我们在调用这个函数的时候不需要关心其内部实现,只需要调用vano()函数,并且将布成本和棉花成本扔进去,我们就可以得到这个玩偶的总成本

对于你说的getinput()我们来看看,get类型的有很多:int getc(FILE * stream)//和fgetc等效,由fgetc通过宏实现。int getch(void)(非标准库)//从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符。不带回显。int getche(void)(非标准库)  //从标准输入读入一个字符,键盘输入的时候,屏幕立即显示所输入的字符。带回显。int fgetc( FILE * stream )//从流stream中读一个字符。将标准输入stdin作为它的实参时,从标准输入读取一个字符。int getchar( void )  //从标准输入stdin读入一个字符,回车后继续执行。char * fgets(char * str, int num, FILE *stream)//从流stream中读入最多num个字符到字符数组str中,当遇到换行符、或读到num-1个字符时停止。自动加上’\0’空字符结尾char * gets( char * str ) //从标准输入stdin读取一个字符串,遇到换行或结束时候终止。不同于fgets,他没有指定num,所以需要注意字符数组str的大小。说明:getc、getchar都是通过宏定义借助fgetc实现。如getchar的实现为,#define getchar() fgetc(stdin)
getinput()字面意思都能理解,get获取,input输入,程序是让你输入一个地址啊
struct Book *book
就是要你传入地址!!!

同意1楼的说法好吧

编程追风梦 发表于 2022-9-9 06:22:06

临时号 发表于 2022-9-8 23:18
struct Book *book这不是你自己要求传入一个地址吗

同意,楼主好像没明白老师讲什么

dolly_yos2 发表于 2022-9-9 15:01:45

编程追风梦 发表于 2022-9-9 06:21
对于你这个问题,我也是无语了




好,但是不好:没有规定 getc 和(或) getchar 是宏。标准只规定了如果 getc 是通过宏实现的,则其可能(可以)对传入的参数进行多于一次求值,因此向其传递的参数不应该包含副作用;标准对 getchar 的规定则是“与传递了 stdin 参数的 getc 等价”。
在测试中,我使用的实现的 getc 和 getchar 也均不是通过宏实现的。

wszjb 发表于 2022-9-9 20:47:28

编程追风梦 发表于 2022-9-9 06:21
对于你这个问题,我也是无语了




可能我没讲清楚我到底不清楚什么,自定义函数我倒是明白,我就是不知道把&b1传上去之后程序怎么运行的,是不是对&b1进行了一次解引用,然后把b1赋值

编程追风梦 发表于 2022-9-9 21:50:03

wszjb 发表于 2022-9-9 20:47
可能我没讲清楚我到底不清楚什么,自定义函数我倒是明白,我就是不知道把&b1传上去之后程序怎么运行的,是不 ...

没错啊
页: [1]
查看完整版本: 求助