【发布时间】:2015-07-15 09:01:05
【问题描述】:
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。
我做错了什么?
【问题讨论】:
-
从不强制转换 malloc 的返回值开始。
-
欢迎来到 Stack Overflow!警告:当在
malloc(等)you should always write it 中以ptr = malloc(sizeof(*ptr) * ...);而不是ptr = malloc(sizeof(ptrtype*) * ...);调用sizeof时。 -
忽略我们看不到的事实,您在哪里调用返回的部分,所以我们无法弄清楚为什么。这就是您期望的结果。如果没有该信息,我们甚至无法猜测符号,因此“但此函数返回值 1070192”。只是一个没有任何内容的泡沫。我敢打赌,除了
0's 和1's 之外没有返回任何东西,其他一切都是对任何层的解释,你甚至不与我们分享;) -
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。跨度>