char ** makeArray(int count)
{
char **array[count];
return array[count];
}
一個函數,在令牌的數量需要從陣列然後返回具有正確大小的陣列。 但由於某些原因,它正在改變計數。
在我的主要功能我用的功能,此代碼:
char **dictionary;
dictionary = makeArray(count);
計數的使用功能前值是10,和我使用後的功能計數的值變爲6
char ** makeArray(int count)
{
char **array[count];
return array[count];
}
一個函數,在令牌的數量需要從陣列然後返回具有正確大小的陣列。 但由於某些原因,它正在改變計數。
在我的主要功能我用的功能,此代碼:
char **dictionary;
dictionary = makeArray(count);
計數的使用功能前值是10,和我使用後的功能計數的值變爲6
我不知道你使用的是什麼c編譯器,但是這些代碼不能用VC++編譯。如果你想在編譯時聲明一個數組,你的「count」變量必須是一個編譯時間常量。
這個怎麼樣?
char ** makeArray(int count)
{
char** array = (char**)malloc(sizeof(char*)*count);
return array;
}
記住使用後丟棄的陣列,也將導致內存泄漏
free(array);
必須有更多的在你的代碼比。請創建可能的最小程序來顯示此錯誤併發布,以便我們可以有更多的上下文。 – Carl 2014-09-27 16:27:03
你的函數不返回數組 - 這是不可能的。它返回一個指向局部變量的指針。該函數返回後,該局部變量即已死亡。因此你有未定義的行爲。你需要使用'malloc'(或者這樣)並記住清理。 – Mat 2014-09-27 16:28:18