1
所以今天的練習是創建一個從0到n的函數initialize an array of int
和fill it
。C指針和malloc混淆EXC_BAD_ACCESS
我寫了這個:Initialize array in function 然後我的函數改爲:
void function(int **array, int max)
{
int *ptr; // Create pointer
int i = 0;
ptr = (int *) malloc((max + 1) * sizeof(int)); // Changed to malloc to the fresh ptr
*array = ptr; // assign the ptr
while (i++ < max)
{
ptr[i - 1] = i - 1; // Use the ptr instead of *array and now it works
}
}
void function(int **array, int max)
{
int i = 0;
*array = (int *) malloc((max + 1) * sizeof(int));
while (i++ < max)
{
*array[i - 1] = i - 1; // And get EXC_BAD_ACCESS here after i = 2
}
}
的EXC_BAD_ACCESS
我越來越瘋狂,我決定SO上搜索,發現這個問題了幾個小時後,
現在它可以工作!但是它不夠用,我真的很想知道爲什麼我的第一種方法不起作用!對我來說他們看起來一樣!
PS:萬一這是主要的使用:
int main() {
int *ptr = NULL;
function(&ptr, 9);
while (*ptr++) {
printf("%d", *(ptr - 1));
}
}
請標記爲已回答 –
我還不能!不要擔心我會盡快做到這一點:9更多分鐘 – ItsASecret
我的不好!...我很抱歉! –