int* dec2bin(int y){
int *arr = (int*)malloc(sizeof(int)*5);
int i;
for (i=0; i<5; i++) arr[i]=0;
return arr;
}
在这段代码中,我编写0
了arr[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] 删除。
我来说两句