我从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);
我的推论有什么问题?
发布于 2018-10-20 03:12:37
在本例中,table是一个element数组。在这种情况下,size不是element的大小,而是数组中有多少elements (换句话说,数组的长度)。
这是一个非常好的例子,说明了为什么正确命名变量很重要。在这种情况下,size不是这个变量的最佳名称,类似于count或num_elements这样的名称更合适。
发布于 2018-10-20 05:13:01
嗯,我想您对size在这一行中的用法感到困惑。
table = (struct element *)malloc(sizeof(struct element) * size);
这里的size指的是要存储多少个struct元素类型的条目?
如果我想存储两个这样的条目,那么我的size将是2,如果size是1,那么只提供一个条目的空间。每个条目都有one integer, one float and one character的空间。这个size与结构中的内容无关。
https://stackoverflow.com/questions/52902070
复制相似问题