As Sean said, you should use a STL container if you do not want to use a fixed sized array. The problem is that you will be tempted to insert or delete random elements relatively often. Instead of using a fixed sized array, I recommend using a std::vector, which basically is an array (at least in memory) with some additional features. In contrast to std::list, the data lies continuously in memory and thus calculations as physics and collision detection can be done effectively. Furthermore, it automatically does the resizing for your, so you will not have problem if you cannot determine a 'gameplay-implicit limit' for the number of bullets.
Furthermore, as I said, you will be tempted to delete random elements in the vector. Instead, do this: For each bullet, set a boolean alive flag. This will be true if the element of the vector represents a bullet which currently is flying through space and will be false if the element of the vector represents a 'free' slot. Use this 'free' slot when creating new bullets.