你们有没有人可以解释为什么这个memcpy函数不起作用?
function x = distance(T, route)
load(route)
n=10e6;
x = mean(distance_km);
i = 1;
maxiter=100;
tol= 5e-4;
condition=inf
fx = @(x) time_to_destination(x, route,n);
dfx = @(x) 1./velocity(x, route);
while condition > tol && i <= maxiter
i = i + 1 ;
Guess2 = x - ((fx(x) - T)/(dfx(x)))
condition = abs(Guess2 - x)
x = Guess2;
end
end
答案 0 :(得分:1)
该代码甚至不应该编译;它肯定不符合C。
未定义void
指针的算术 - 您应该做的是创建char
指针,您可以从中复制。并记住返回目标缓冲区的开头,而不是结尾:
#include <stdlib.h> /* for size_t */
void *ft_memcpy(void *restrict dst, const void *restrict src, size_t n)
{
char *d = dst;
const char *s = src;
while (n--)
*d++ = *s++;
return dst;
}
顺便说一句,请注意,一个好的编译器有权识别这个复制循环并将其优化为标准库memcpy()
的调用。