【发布时间】:2020-12-28 02:32:12
【问题描述】:
我想将值插入到数组的最后一个位置。所以,我创建了函数插入。该函数返回新数组。
在这段代码中,我想将value=0 插入array={1} 的最后一个位置,并将新数组分配给我在main 开头声明的数组。
所以我写了:
array = insert(&array[0], value, NUM(array), NUM(array)+1)
但是,我收到了错误:
ERROR: assignment to expression with array type` in the line:
`array = insert(&array[0], value, NUM(array), NUM(array)+1);
但如果我声明new_array,则不会发生此错误。
我想知道为什么会出现这种情况以及如何解决。
谢谢。
#include <stdio.h>
#define NUM(a) (sizeof(a) / sizeof(*a))
int * insert(int *, int, int, int);
void main(){
int array[] = {1};
// int *new_array;
int value = 0;
int num = 3;
int pos = 2;
array = insert(&array[0], value, NUM(array), NUM(array)+1);
int i;
for(i = 0; i < NUM(array); i++) {
printf("array[%d] = %d\n", i, array[i]);
}
}
int * insert(int *p, int a, int N, int pos){
int i;
// // now shift rest of the elements downwards
// for(i = N; i >= 0; i--) {
// p[i+1] = p[i];
// }
// increase the size by 1
N++;
// shift elements forward
for (i = N-1; i >= pos; i--)
p[i] = p[i - 1];
// insert x at pos
p[pos - 1] = a;
return p;
}
【问题讨论】:
-
您需要分配给数组的一个元素。您不能分配给数组本身。错误消息基本上就是这样说的。所以如果
a是一个数组,你就不能做a = ...。你需要做a[i] = ...。 -
这能回答你的问题吗? Insert element into array C