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

Вы должны объявить i вне цикла for. – Sinkingpoint

ответ

5

Когда вы делаете myArray++, вы теряете исходный указатель на выделенную память.

Вместо этого вы, вероятно, следует сделать:

*(myArray + i) = i; 

Или даже просто использовать нормальную индексацию массива:

myArray[i] = i; 
+0

Да, индексирование в порядке, я написал это так, изначально, просто хотел попробовать указатели. спасибо, я принял, что я продвигаю указатель, не создавая, по крайней мере, темп, чтобы сохранить начальную позицию. он работает сейчас. –

+0

+1 супер простой ответ. формат myArray [ELEMENT] более широко используется, поскольку при добавлении дополнительной арифматики в * (myArray + ELEMENT ...) можно получить неаккуратный. – John

Смежные вопросы