我从 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
不是此变量的最佳名称,像count
或num_elements
这样的东西会更合适。
好吧,我想你对这一行中使用size
感到困惑
table = (struct element *)malloc(sizeof(struct element) * size);
size
这里指的是您希望存储多少个结构元素类型的条目?
如果我想存储两个这样的条目,那么我的size
将是 2。如果size
为 1,则仅提供一个条目的空间。每个条目都有空间供one integer, one float and one character
。这种size
与结构内部的内容无关。