malloc(sizeof(结构元素)*大小);或malloc(sizeof(struct element)* 1);

时间:2018-10-20 03:06:35

标签: c

我从6.6.  Arrays and Pointers读取了这样的代码段

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

我的扣除有什么问题?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

好吧,我认为您对在此行中使用size感到困惑

table = (struct element *)malloc(sizeof(struct element) * size);

size是指您要存储多少个struct元素类型的条目?

如果我要存储两个这样的条目,那么我的size将为2。如果size为1,则将仅提供一个条目的空间。每个条目都会有one integer, one float and one character的空间。 size与结构内部的内容无关。