2013-04-02 63 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