new, delete, pointer arithmitic?
The new keyword allows you to create variables/objects dynamically during runtime. The delete keyword frees-up the memory that was allocated by new.
I'm not sure if this is what is meant by dynamic initialization. Usually, "initialize" means to give an initial (starting value) , or default value.
As for pointers and arrays, the assignment might be an exercise using pointer arithmetic. Hint: if you incriment a pointer to an element in an array, the pointer will now point-to the next element in the array.
int x; // Declare x, don't initialize
int y = 0; // Delcare and initialize y
x = 5; // Initialize x=5
The other possibility is an array of pointers. For example, you would make the first pointer (in the pointer arrray) point-to the smallest value in the data array (not to the first element in the array). When you are done with the sort, and you sequence through the pointer array, printing the pointed-to data, the results will print in the sorted order, even though the original data array is still unsorted. Sorry, I'm not explaining that very well... :(
I hope this helps you get started.
DYNAMIC INITIALIZATION OF VARIABLES
From my understanding the dynamic initialization of variables referes to the expression used in the assignment. If the expression used cannot be computed until runtime then it is a dynamic initializtion.
since the compiler doens't know what value the funciton will return until the program is actually run this would be an example of a dynamic initialization.