我有一个带有书结构数组的函数,但是当我尝试将它返回到我的main时,它不会返回值并将它们存储在数组中。如果addBook函数必须无效,我将如何解决这个问题,以便以后可以访问数组元素。
TypeNameHandling
答案 0 :(得分:1)
由于addBook
的函数签名表示返回void,因此您的返回语句不会执行您想要的操作。令我感到惊讶的是,实际编译的代码没有关于此的错误。
无论如何,书籍数据可以从传入的方式返回 - 作为输入和输出参数。
基本上你的代码可能如下所示(这只是一个编译代码的例子,用于将标准输入中输入的信息保存到本书中):
#include <stdio.h>
struct Book {
int value;
};
#define MAX_BOOKS 2
void addBook(struct Book book[], int *size) {
if (*size == MAX_BOOKS) {
printf("The inventory is full\n");
}
else {
printf("Value:");
scanf("%d", &book[*size].value);
(*size)++;
printf("The book is successfully added to the inventory.\n");
}
}
int main(void) {
struct Book book[MAX_BOOKS];
int size = 0;
addBook(book, &size);
printf("Book 1: Value=%d\n", book[0].value);
}
这是运行时的样子:
$ ./main
Value:9
The book is successfully added to the inventory.
Book 1: Value=9
希望这能回答你的问题。
答案 1 :(得分:0)
我认为你的问题在*size++;
行。您应该使用括号,否则您正在修改指向大小的指针,而不是值。它应该是(*size)++
。
此外,addBook函数不应返回任何内容,因为它是无效的,并且它已经在更改数组的内容。