首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化动态向量,而不知道最终长度

初始化动态向量,而不知道最终长度
EN

Stack Overflow用户
提问于 2014-01-16 06:09:30
回答 2查看 77关注 0票数 0

我正在尝试做一件(可能)简单的事情。但我有一些配音。我想用C初始化一个数组,但我不知道在循环结束时需要多少个元素。所以我在考虑用这种方式动态分配它:

代码语言:javascript
复制
int *segment;
int index=0;

for (i=0; i<height; i++) 
{
    for (j=0; j<width; j++) 
    {
         if ("some_condition_is_verified"){

             segment[index] = (int)calloc(1, sizeof(int));
             segment[index] = 5;  // 5 is only for example.
             index++;     
         }    
    }   
}

我相信这个声明是不好的,因为它给了我这样的错误:warning: cast from pointer to integer of different size [-Wpointer-to-int-cast],o我可以用哪种方式呢?这是错的吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-01-16 09:10:31

这是错的吗?

segment[index]类型为int

像这样修复代码示例:

代码语言:javascript
复制
int *segment;
int index=0;

segment = calloc(height*width, sizeof(int));//ensure a maximum memory for vector.
for (i=0; i<height; i++){
    for (j=0; j<width; j++){
         if ("some_condition_is_verified"){
             segment[index++] = 5;  // 5 is only for example.
         }    
    }   
}
segment = realloc(segment, index*sizeof(int));//reduce the size,
票数 1
EN

Stack Overflow用户

发布于 2014-01-16 06:12:45

calloc不返回int,而是返回指向int ( int *)的指针。

正确的代码应该是

代码语言:javascript
复制
 segment = (int *) calloc(1, sizeof(int));

在那里,您可以将指针用作数组(本质上,数组只是静态分配的“指针”)。

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

https://stackoverflow.com/questions/21149305

复制
相关文章

相似问题

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