我想创建一些带有两个参数的函数:int 元素和输入数组。我希望这个函数将元素参数放在数组的第一位,将数组放大单个索引,最后将输入数组放在推入的元素之后。
为了说明这一点,假设我的输入数组是 {1, 2, 3},作为参数传递的元素是 5。输出应该是 {5, 1, 2, 3}。
我怎样才能以最佳方式做到这一点?
我提出了这个功能:
void push(int el, int **arr)
{
int *arr_temp = *arr;
*arr = NULL;
*arr = (int*) malloc(sizeof(int)*(n - 1));
(*arr)[0] = el;
for(int i = 0; i < (int)n - 1; i++)
{
(*arr)[i + 1] = arr_temp[i];
}
}
它可以工作,但是它不是我写的最快的函数,而且它会减慢整个程序的速度。有一个更好的方法吗?
我的猜测是在做类似的事情(*arr)[1] = arr_temp
,但它没有用,我不确定 C 中是否有可能做这样的事情。