[英]C: Why can't I malloc inside the function
我有int *b
和 function
void to_Binary(int num, int range, int **bi_res)
{
int k = num, c = 0, r;
*bi_res = (int *) calloc(range,sizeof(int));
while (range >= c) {
r = k%2;
c++;
(*bi_res)[range-c] = r;
k /= 2;
}
return;
}
這是我如何將b
發送到 function 的示例
void main
{
// A small example if you want to replicate.
int *b;
int i = 0;
to_Binary(56,6,&b);
while (i < 6) {printf("%d\n",b[i]); i++;}
return;
}
但它給了我循環中的段錯誤
注意: function 本身工作正常,如果我以其他方式訪問它,它必須做的事情,但如果我需要返回一個我不知道大小的整數數組
while 循環至少有兩個問題。 第一個是您在此語句中使用了不正確的表達式
*bi_res[range-c] = r;
你必須寫
( *bi_res )[range-c] = r;
第二個是,如果您甚至使用正確的表達式,但當范圍等於 c 時,您將嘗試訪問超出分配的數組,因為循環內的這個增量
c++;
因此表達式
range-c
會有一個負值。
你可以像這樣寫循環
while (range != c) {
//...
}
而這個說法
k =/ 2;
包含語法錯誤。 你的意思是
k /= 2;
請注意,return 語句是多余的。
function main 應該聲明為
int main( void )
並且您應該在 main 中釋放分配的 memory。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.