Как найти последний элемент в int массиве?
Если массив задан статически:int alpha[100];

alpha[99]=4242;

const int last = alpha [ (sizeof(alpha) / sizeof(alpha[0]))-1];
Если у вас есть только указатель на начало массива - то никак. Храните длину отдельно.
Никак, если его не помечать.
Для этого в char-строках ("C-strings", "zero-terminated strings") добавляют в конец элемент со значением '\0' (нуль-символ), на наличие которого опираются стандартные функции, вроде strlen(const char*), которая считает символы до первого зеро-терминатора.
ЗЫ Теоретически, есть еще некоторый allocation header, который находится перед выделяемым динамически (то есть только в хипе) буфером, на который ориентируется free(void*), но это никак не регламентируется стандартом.UPD: Начиная с C++11 у нас есть std::array, который фактически оборачивает буфер в объект.