It doesn't have anything to do with the 'const'ness of the size. It has to do with the fact that the size of the array is being initialized from a value stored elsewhere in the program -- which is illegal in C90. Hence, the array is 'dynamic' because its size is not guaranteed to be fixed at compile time (whether const or not). Remember, const values are only indicated to be unchangable by your program. Oh, and here's a plug for const_cast.
Moreover, if you can create an array using some value stored elsewhere, what difference does it really make whether that value is const or not? The architecture to implement the allocation would be the same. Hence, it is a dynamic allocation.
If you want to be able to do this sort of thing, you must use a compiler that understands C99 or C++.
I'm surprised that someone didn't suggest this before the use of operator new to allocate the memory. The std::vector would be my first choice for a dynamic array. std::vector<float> tempArr(arrSize, 0.0);