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我能做什么?这是错的吗?
感谢
答案 0 :(得分:1)
这是错的吗?
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,
答案 1 :(得分:0)
calloc
不会返回int
,而是指向int
(int *
)的指针。
正确的代码是
segment = (int *) calloc(1, sizeof(int));
从那里,您可以将指针用作数组(实质上,数组只是静态分配“指针”)。