首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >malloc(size or (struct元素)* size);或malloc(size or(struct元素)* 1);

malloc(size or (struct元素)* size);或malloc(size or(struct元素)* 1);
EN

Stack Overflow用户
提问于 2018-10-20 03:06:34
回答 2查看 396关注 0票数 0

我从6.6.数组和指针上读到了这样一段代码

代码语言:javascript
复制
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。

代码语言:javascript
复制
{
  float number1;
  int number2;
  char letter;
};

如果是*size,则应该留出3*3内存空间。

我想应该是个简单的table = (struct element *)malloc(sizeof(struct element) 1);

我的推论有什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-20 03:12:37

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

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

票数 6
EN

Stack Overflow用户

发布于 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与结构中的内容无关。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52902070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档