我从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);
我的扣除有什么问题?
答案 0 :(得分:6)
在这种情况下,table
是element
的数组。在这种情况下,size
不是element
的大小,而是数组中有多少elements
(或者换句话说,数组的长度)。
这是一个很好的例子,说明为什么正确命名变量很重要。在这种情况下,size
不是此变量的最佳名称,像count
或num_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
与结构内部的内容无关。