我正在尝试做一件(可能)简单的事情。但我有一些配音。我想用C初始化一个数组,但我不知道在循环结束时需要多少个元素。所以我在考虑用这种方式动态分配它:
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我可以用哪种方式呢?这是错的吗?谢谢
发布于 2014-01-16 09:10:31
这是错的吗?
segment[index]类型为int
像这样修复代码示例:
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,发布于 2014-01-16 06:12:45
calloc不返回int,而是返回指向int ( int *)的指针。
正确的代码应该是
segment = (int *) calloc(1, sizeof(int));在那里,您可以将指针用作数组(本质上,数组只是静态分配的“指针”)。
https://stackoverflow.com/questions/21149305
复制相似问题