2015-04-28 2 views
-3

Может кто-нибудь объяснить, почему можно объявить const указатель на то, что имеет различное значение для каждой итерации цикла?const pointer in for loop (C++ 11)

#include <assimp/Importer.hpp> 
... 

for (int i = 0; i < N; i++) { 
    const aiVector3D* vp = &(mesh->mVertices[i]); 
    // use vp.x ... 
} 

Этот фрагмент является частью примерного кода использования апримента для импорта данных сетки. (я новичок в C++)

+0

'const' просто означает, что компилятор не позволит * you * изменять значение. 'int i = 0; const int * p = & i; ++ (* p)/* ошибка * /; ++ i/* ok * /; ' – Erik

+1

Я думаю, что есть и неправильное представление о том, что означает' const aiVector3D * vp' означает 'aiVector3D * const vp'. – JimmyB

+0

Правильно, в примере это НЕ указатель const; это указатель на объект const. Существует большая разница. http://stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-and-int-const –

ответ

2

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

+0

это не делает недействительным ответ. –

+0

Зачем использовать указатель const вместо указателя? – ultralord

+0

, чтобы извлечь значение, но не изменить его каким-либо образом, или потому, что используемый им API обязывает его передавать указатель const или многие другие причины, почему использование 'const' в C++ –