在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;
}

在这段代码中,我编写0arr[0]从到的内容arr[4],但函数返回了1070192我想回来00000

我究竟做错了什么?

来自莫斯科的弗拉德

该函数返回指向已分配内存的指针

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

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

    return arr;
}

对于5个整数的数组。除非分配失败,否则其地址可能不等于0。但是整数本身等于0。

例如,如果您通过以下方式编写调用(不清楚参数的含义)

int *p = dec2bin( 0 );

那么* p(数组的第一个元素)将确实等于0

甚至你可以写

int *p = dec2bin( 0 );

for ( int i = 0; i < 5; i++ ) printf( "%i ", p[i] );

并且您将获得数组的所有元素等于0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章