【发布时间】:2015-12-14 02:49:06
【问题描述】:
我有 结构:
typedef struct Rental {
int nDays;
float kmsDriven;
char carLicensePlate[LICENSE_PLATE_LENGTH+1];
char *clientName;
char chargingCategory;
} Rental;
不同的 -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)))
这是我目前想到的,但我不能完全理解……所以:
我无法理解
*rentals如何成为一个数组。我的意思是我不应该至少这样声明它:Rental *rentals[];?我知道如果我编译上面的代码我会看到一个错误...但是为什么呢?我在 Stack Overflow 上阅读了很多关于使用双指针 (
Rental **rentals;) 执行此操作的帖子,但其他人发布的代码对我来说通常很难阅读(我不知道所有功能等)假设我有对象
rentals[0],它将是指向rentals的指针。如果我想将结构传递给函数,我应该写:variable=function(*arguments*... , Rental *rentals[0]);?
【问题讨论】:
-
不知道 C 库函数是阅读/理解每个正在使用的函数的手册页的好时机。在我的 ubuntu linux 14.04 上,使用代码时,我总是打开一个终端,所以我可以输入
man <functionName>因为我发现我的“编辑”记忆并不完美,尤其是在记住所有细节时。
标签: c struct dynamic-memory-allocation double-pointer