The () in item = new var*[n](); will value-initialize all of the pointers to nullptr for you, so you don't need to do it manually afterwards.
int n = 8;
var **item;
item = new var*[n](); // <-- all are nullptr here
Live Demo
That said, you really should be using std::vector instead of new[] directly:
int n = 8;
std::vector<var*> item;
item.resize(n);
Or simply:
int n = 8;
std::vector<var*> item(n);
Live Demo
Either way should initialize the pointers to nullptr as well. But if you want to be explicit about it, you can do so:
int n = 8;
std::vector<var*> item;
item.resize(n, nullptr);
int n = 8;
std::vector<var*> item(n, nullptr);
Live Demo
{ }only initialises the first element. This is a common misconception, where people thinkbool arr[5] = { true };will initialise them all totrue