Return C 中的 malloc
Return malloc in C
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]
,但是函数 returns 1070192
。我要return00000
.
我做错了什么?
您很可能正在打印 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;
}
你可以看到我用了calloc()
,那是因为你要把所有的值都初始化为0
,否则就用malloc()
代替。
函数returns指向已分配内存的指针
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。
如果您想将该数组的值作为字符串(字符数组)获取,下面是您可以开始的代码。
char* dec2bin(int y) {
int *arr = (int *) malloc(sizeof(int) * 5);
char output[50];
int i;
for (i=0; i<5; i++) arr[i] = 0;
sprintf(output, "%d%d%d%d%d", arr[0], arr[1], arr[2], arr[3], arr[4]);
return output;
}
要打印出来,您可以使用:
char *string = dec2bin(0);
printf("%s", string);
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]
,但是函数 returns 1070192
。我要return00000
.
我做错了什么?
您很可能正在打印 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;
}
你可以看到我用了calloc()
,那是因为你要把所有的值都初始化为0
,否则就用malloc()
代替。
函数returns指向已分配内存的指针
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。
如果您想将该数组的值作为字符串(字符数组)获取,下面是您可以开始的代码。
char* dec2bin(int y) {
int *arr = (int *) malloc(sizeof(int) * 5);
char output[50];
int i;
for (i=0; i<5; i++) arr[i] = 0;
sprintf(output, "%d%d%d%d%d", arr[0], arr[1], arr[2], arr[3], arr[4]);
return output;
}
要打印出来,您可以使用:
char *string = dec2bin(0);
printf("%s", string);