malloc(sizeof(struct element) * size); or malloc(sizeof(stru



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

我的扣除有什么问题?

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

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

好吧,我想你对这一行中使用size感到困惑

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

size这里指的是您希望存储多少个结构元素类型的条目?

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

最新更新