I think, You are printing out an iterator in your loop, not the bullet object address.
Also I cannot get your code to run. What are you trying to accomplish that is not working?
#include <iostream>
int main()
{
int val = 6;
int* val_ptr = &val;
// We don't expect the value contained by val_ptr to be 6
std::cout << "val_ptr: " << val_ptr << '\n';
// similarly we expect that the object val_ptr will have an address
// that is different than val.
std::cout << "&val_ptr: " << &val_ptr << '\n';
// The same goes for pointers.
int * ptr;
int ** ptr_ptr = &ptr;
std::cout << "ptr: " << ptr << '\n' ; // some unspecified value
std::cout << "ptr_ptr: " << ptr_ptr << '\n' ; // the address of ptr
std::cout << "&ptr_ptr: " << &ptr_ptr << '\n'; // the address of ptr_ptr
}
pointers, in addition to the pointed to value and address, also have a memory address of their own. Since they are objects that are allocated on the stack.