在C中返回malloc

sna*_*nag 1 c malloc

int* dec2bin(int y){
    int *arr = (int*)malloc(sizeof(int)*5);
    int i;

    for (i=0; i<5; i++) arr[i]=0;

    return arr;
}
Run Code Online (Sandbox Code Playgroud)

这是函数dec2bin的一部分.
在这段代码,我做的arr[0]arr[4]的一切0.
但是这个函数返回值1070192.我想回来00000.
我该怎么做才能解决这个问题?

Iha*_*imi 5

很可能你正在打印返回的地址malloc().

例如,您需要一个循环来打印内容

int *dec2bin(int size)
{
    return calloc(size, sizeof(int));
}

int main(void)
{
    int *data;
    int  index; 
    int  size;

    size = 5;
    data = dec2bin(size);
    if (data == NULL)
        return -1; /* allocation error */
    for (index = 0 ; index < size ; index++)
        printf("%d", data[index]);
    printf("\n");
    free(data);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

您可以看到我使用过的calloc(),那是因为您要将所有值初始化为0,否则请使用malloc().

  • 好盲目的猜测. (2认同)
  • @Zaibis认为-1不是一个很好的理由,没有其他解释.另外,请注意OP说,*此函数返回值...* (2认同)
  • @Zaibis在这种情况下,问题应该被搁置为"不清楚你在问什么"/"目前的形式无法回答"等等.不要因为问题不清楚而拒绝投票,而是根据他们的判断答案自己的功绩.如果问题确实无法以当前形式得到解答,那么当关闭/删除时,所有答案也会随之消失. (2认同)