C 使用结构指针的源代码 在最终输出中
符号-咕咕 股票-100 价格-801.19 值-%.2f 第33行的最终指针引用如何指向输出%.2f? 我知道%%用于显示%] 为什么程序中会重新分配内存 假设,如果我在代码中为invest指针添加一个realloc函数,它将如何影响程序或使其性能更好? realloc如何帮助“释放”内存C 使用结构指针的源代码 在最终输出中,c,pointers,struct,malloc,realloc,C,Pointers,Struct,Malloc,Realloc,符号-咕咕 股票-100 价格-801.19 值-%.2f 第33行的最终指针引用如何指向输出%.2f? 我知道%%用于显示%] 为什么程序中会重新分配内存 假设,如果我在代码中为invest指针添加一个realloc函数,它将如何影响程序或使其性能更好? realloc如何帮助“释放”内存 我无法完全理解realloc与malloc的关系。2f需要一个额外的%符号才能将最终的.2f转换为格式,而不是显示的字符串文字 其次,realloc用于调整内存中先前调用的数组的大小 第33行的最终指针引用
我无法完全理解realloc与malloc的关系。2f需要一个额外的%符号才能将最终的.2f转换为格式,而不是显示的字符串文字 其次,realloc用于调整内存中先前调用的数组的大小 第33行的最终指针引用如何指向输出%.2f 因为%%会导致printf显示%符号,而不会将第二个%作为格式说明符的开头。这就剩下了.2f,它只是printf术语中的文字字符,需要逐字打印 为什么程序中会重新分配内存 realloc用于更改先前malloc的内存区域的大小,同时尽可能多地保留其中的数据。在本例中,您分配了足够的内存来存储struct stock的一个实例。如果您决定需要两个实例,可以这样做:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
struct stock {
char symbol[5];
int quantity;
float price;
};
struct stock *invest;
/*Create structure in memory */
invest=(struct stock *)malloc(sizeof(struct stock));
if(invest==NULL)
{
puts("Some kind of malloc() error");
exit(1);
}
/*Assign structure data */
strcpy(invest->symbol,"GOOG");
invest->quantity=100;
invest->price=801.19;
/*Display database */
puts("Investment portfolio");
printf("Symbol\tShares\tPrice\tValue\n");
printf("%-6s\t%5d\t%.2f\t%%.2f\n",\
invest->symbol,
invest->quantity,
invest->price,
invest->quantity*invest->price); /* I dont understand this line */
return(0);
}
这几乎相当于
invest = realloc(sizeof(struct stock) * 2);
区别在于realloc可以检查原始内存块,看看它是否可以扩展,这比分配新块、复制数据和释放旧块要快得多
我不懂这句话
这只是一个将数量和价格相乘的表达式。我知道%%用于显示百分比。这就是%%.2f输出%.2f的原因。另请注意:您似乎在编译时没有警告。invest->price=801.19应该会发出收窄警告。801.19是一个双字面值,填充到浮点值try 801.19f中。我使用code::blocks,在其中我可能需要更改编译器的设置。它有时不显示用于向初学者显示警告的代码的警告。小帮助?关于的强制链接。现在我真正想知道的是,那些一直教初学者这么做的白痴是谁?
struct stock* newInvest = malloc(sizeof(struct stock) * 2);
memcpy(newInvest, invest, sizeof(struct stock));
free(invest);
invest = newInvest;
invest->quantity*invest->price);