c - malloc(sizeof(struct element) * size); 或 malloc(sizeof(struct element) * 1);
问题描述
struct element
{
float number1;
int number2;
char letter;
};
struct element *table;
table = (struct element *)malloc(sizeof(struct element) * size);
for (i = 0; i < size; i++)
{
table[i].number1 = 0.0;
table[i].number2 = 10;
table[i].letter = 'B';
}
参考table = (struct element *)malloc(sizeof(struct element) * size);
,我对附加感到困惑*size
:
struct element
其大小为 3
{
float number1;
int number2;
char letter;
};
如果*size
,则应预留 3*3 的内存空间。
我想这应该是一个简单的table = (struct element *)malloc(sizeof(struct element) 1);
我的扣款有什么问题?
解决方案
在这种情况下,table
是一个数组element
。在这种情况下,size
不是数组的大小,element
而是数组中有多少elements
个(或者换句话说,数组的长度)。
这是一个很好的例子,说明为什么正确命名变量很重要。在这种情况下,size
不是这个变量的最佳名称,类似count
或num_elements
会更合适。
推荐阅读
- terraform - 如何使用 terraform 使用 for_each 创建多个不同名称、不同 CPU 和内存要求的 vsphere VM
- oauth-2.0 - Microsoft 作为个人帐户的 OAuth2 提供者不颁发 JWT 访问令牌
- python - django jsonresponse 返回空值
- flutter - 使用http包从API获取大数据非常慢,我怎样才能更快地获取数据?
- reactjs - Firebase 存储的获取速度极慢
- java - koin 如何与 android 中的属性一起使用?
- amazon-web-services - 将 Step Function 的输入传递给 Glue JOb
- c# - 如何正确使用 C# 自动化测试 AreEqual?
- flutter - 不同的模型作为函数的输入
- c# - 我的 WPF 应用程序的当前上下文中不存在名称“InitializeComponent”