gpt4 book ai didi

c - 关于大学项目的问题

转载 作者:行者123 更新时间:2023-11-30 15:13:53 25 4
gpt4 key购买 nike

我有结构:

typedef struct Rental {
int nDays;
float kmsDriven;
char carLicensePlate[LICENSE_PLATE_LENGTH+1];
char *clientName;
char chargingCategory;
} Rental;

不同的租赁类型结构通过动态分配的指针数组来存储和访问(这是项目的一部分):

int main (){

Rental *rentals;

int max_num;

printf("Give a number of rentals you would like to store and manage: ");

scanf("%d", &max_num);

rentals=(Rentals *)malloc(max_num * (sizeof(Rental)))

这是我到目前为止所想到的,但我无法完全理解它......所以:

  1. 我无法理解 *rentals 如何成为数组。我的意思是我不应该至少这样声明它:Rental *rentals[];?我知道如果我编译上面的代码,我会看到一个错误......但是为什么?

  2. 我在 Stack Overflow 上读过很多关于使用双指针执行此操作的帖子 (Rental **rentals;),但其他人发布的代码对我来说通常很难理解阅读(我不知道所有的功能等等)

  3. 假设我有对象 rentals[0],它将是指向 rentals 的指针。如果我想将结构传递给函数,我应该写:variable=function(*arguments*... , Rental *rentals[0]);

最佳答案

  1. rentals 是一个指针,不是数组,但它是指向 max_num 结构 block 的第一个(第零个)元素的指针,因此它可以将其视为数组,因为您可以使用 rentals[n] 来引用数组的第 n 个元素。

  2. 这不是一个问题,因此无法回答。

  1. Let's say I have the object rentals[0] which will be a pointer towards rentals. If I wanted to pass the struct to a function, should I write: variable=function(*arguments*... , Rental *rentals[0]);?
  • rentals[0] 不是指针;它是一个struct RentalRental

  • 如果要将结构传递给函数,请编写:

    variable = function(…args…, rentals[0]);

    如果你想将结构体的指针传递给函数,你可以这样写:

    variable = function(…args…, &rentals[0]);

    或者:

    variable = function(…args…, rentals);

    它们将相同的地址传递给函数。

您应该错误检查对 scanf() 的调用,以确保您获得了一个数字,并且您应该错误检查您获得的数字(它应该严格为正数,而不是零或负数) ,并且您应该错误检查 malloc() 返回的值。

关于c - 关于大学项目的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34259034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com