我分配了一個數組使用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