c - C语言中如何用另一个数组覆盖一个数组

标签 c arrays

我想知道在 C 中是否可以用另一个数组覆盖一个数组的内容,这样做后,我该如何解决数组大小丢失的问题?

假设我有两个数组。

int a[] = {1,2,3,4,6,7,8};
int b[] = {1,6};

// How can I overwrite the array a with array b, so get the following?:
a[] = {1,6};

最佳答案

当您声明一个像 a[] = {...} 这样的数组时,该数组将获得一个无法更改的固定大小,该大小在编译时确定。

如果你想使用动态数组,你需要在堆上分配,在 C 中这是通过 malloc 和 realloc 完成的。 realloc 允许您调整数组的大小。

例如

char* p = malloc(10);
char* q = realloc(p, 5); // now you made the array 5 bytes shorter

需要检查realloc的返回值才能知道realloc是否成功。

char* q = realloc(p, 5);
if (q != NULL) // successful

引用:https://en.cppreference.com/w/c/memory/realloc

关于c - C语言中如何用另一个数组覆盖一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229102/

相关文章:

ios - 阻止 UIScrollView 滚动,如果滑动手势是在一个区域

我们可以在 C 中使用函数指针调用函数吗?

C 将字符串拆分为单个单词并将单个单词保存在数组中

c# - 在 C# 中比较一个 int 和多个 int 数组

javascript - 使用javascript压缩二维数组的重复

arrays - PowerShell 中的字符串比较似乎不起作用

c++ - SDL2 Alpha 未出现

将 MIPS 系统调用转换为 getchar();或 scanf();在C中

python - 如何将许多 2D numpy 数组快速放入 4D numpy 数组中?

javascript - 使用javascript动态控制多个潜水风格的风格,使用类