c语言中,如何使用数组最后一个元素的后面一个元素的值完成数组的值的拷贝

我的代码时这样的,但是调试后是乱码
#include
void copy3(double ar[], double * source, double * s5);
int main(void)
{
double source[5] = { 1.1,2.2,3.3,4.4,5.5 };
double tar3[5];
copy3(tar3, source, source + 5);

getchar();
return 0;

}
void copy3(double ar[], double * source, double * s5)
{
int i;

for (i = 0; *(source + i) < *s5; i++)
    ar[i] = source[i];

}

请问,如果我需要通过传递数组最后一个元素的后一个数来拷贝数组的数据,应该如何写?(c primer plus的题是这样要求的)

数组最后一个元素的后一个数是未知的..不能 直接用

 *(source + i) < *s5

来判断, 因为

 *s5
可能很大, 这样 函数可能就直接跳出. 导致 ar 数组没有被赋值. 此时读取ar数组就可能是乱码..根据初始化方式有关