首页 > 解决方案 > malloc(sizeof(struct element) * size); 或 malloc(sizeof(struct element) * 1);

问题描述

我从6.6 中读取了这样的代码段。数组和指针

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);

我的扣款有什么问题?

标签: c

解决方案


在这种情况下,table是一个数组element。在这种情况下,size不是数组的大小,element而是数组中有多少elements个(或者换句话说,数组的长度)。

这是一个很好的例子,说明为什么正确命名变量很重要。在这种情况下,size不是这个变量的最佳名称,类似countnum_elements会更合适。


推荐阅读