#include using namespace std; int main() { volatile const int j = 0; const volatile int k = 1; //This is the correct answer. As strange as it may seem, it is possible for a variable to be const and volatile at the same time. This essentially means that the variable cannot be changed by the programmer through C++ code, but it can be changed behind your back by something outside the program's control (an external device, for example). //const int const * j = 0; //This is incorrect. The declaration may appear to be a const pointer to a const int. However, it is actually an invalid declaration because the second const in on the wrong side of the asterisk "*". //const int j; //This is incorrect. A const variable must be initialized. Note that in C, this declaration would be possible if it were for a global variable because const variables are extern by default, which means they could be defined (and initialized) somewhere else.. However, in C++, such a declaration is never valid since const variables are static by default. //void* j, k; //aThis is incorrect. Despite appearances, the second variable, k, is not declared to be a "void*." It is actually declared to be a void. It is not possible to have a variable of type void (you cannot have a variable with no type). int *l = const_cast(&k); *l = 10; cout << "k = " << k << endl; return 0; }