我分配了一个数组使用malloc
,并尝试使用for循环和指针算法填充它,但它不工作,但由于某些原因。指针算术填充动态分配的数组在C
int* myArray = (int*)malloc(100*sizeof(int));
for (int i = 0; i < 100 ; i++)
{
*myArray = i;
myArray++;
}
我分配了一个数组使用malloc
,并尝试使用for循环和指针算法填充它,但它不工作,但由于某些原因。指针算术填充动态分配的数组在C
int* myArray = (int*)malloc(100*sizeof(int));
for (int i = 0; i < 100 ; i++)
{
*myArray = i;
myArray++;
}
当你做myArray++
你失去原来的指针分配的内存。
相反,你应该做的大概:
*(myArray + i) = i;
甚至只是使用普通的数组索引:
myArray[i] = i;
是的,索引是好的,我原来是这么写的,只是想尝试一下指针。 谢谢,我突然意识到,我正在提高指针,但至少没有创建一个保持初始位置的温度。它现在有效。 –
+1超简单的答案。 myArray [ELEMENT]格式的使用更为广泛,因为当额外的算术符号被添加到*(myArray + ELEMENT ...)时可能会变得不稳定。 – John
你能解释一下什么是不工作? – Mysticial
通常,在初始化一个指针后,您不会将其添加到数据中以增加数据。通常你只需要'myArray [ELEMENT] = val'。指针就像数组一样工作。只是一个想法。 – John
你应该在for循环之外声明我。 – Sinkingpoint