It should not be possible to not know its length. If its an array, you allocated it with
type arr[size];
and if its a pointer, you allocated it with
type *arr = new type(size);
In both cases, you have size.
You can get its length from sizeof tricks, but you should never need to do that.
Arrays do not grow as you use them, you must preallocate, same for pointers.
As said, vectors do what you describe, sort of, you have to call a function instead of direct access when adding new values, or pre-allocate like an array....