2013-04-02 67 views
0

我分配了一個數組使用malloc,並嘗試使用for循環和指針算法填充它,但它不工作,但由於某些原因。指針算術填充動態分配的數組在C

int* myArray = (int*)malloc(100*sizeof(int)); 

for (int i = 0; i < 100 ; i++) 
{ 
    *myArray = i; 
    myArray++;  
} 
+0

你能解釋一下什麼是不工作? – Mysticial

+0

通常,在初始化一個指針後,您不會將其添加到數據中以增加數據。通常你只需要'myArray [ELEMENT] = val'。指針就像數組一樣工作。只是一個想法。 – John

+0

你應該在for循環之外聲明我。 – Sinkingpoint

回答

5

當你做myArray++你失去原來的指針分配的內存。

相反,你應該做的大概:

*(myArray + i) = i; 

甚至只是使用普通的數組索引:

myArray[i] = i; 
+0

是的,索引是好的,我原來是這麼寫的,只是想嘗試一下指針。 謝謝,我突然意識到,我正在提高指針,但至少沒有創建一個保持初始位置的溫度。它現在有效。 –

+0

+1超簡單的答案。 myArray [ELEMENT]格式的使用更爲廣泛,因爲當額外的算術符號被添加到*(myArray + ELEMENT ...)時可能會變得不穩定。 – John