malloc(sizeof(struct element)*size); 或malloc(sizeof(struct element)*1);

Alg*_*bra 0 c

我从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';
}
Run Code Online (Sandbox Code Playgroud)

参考table = (struct element *)malloc(sizeof(struct element) * size);,我混淆了额外的*size:

struct element 有一个明确的大小为3

{
  float number1;
  int number2;
  char letter;
};
Run Code Online (Sandbox Code Playgroud)

如果*size,应该预留3*3个内存空间.

我想这应该很简单 table = (struct element *)malloc(sizeof(struct element) 1);

我的演绎有什么问题?

ODY*_*Kon 6

在这种情况下,table是一个数组element.在这种情况下,size不是数组的大小,element而是elements数组中的数量(换句话说,数组的长度).

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