如何将现有数组值分配给数组指针?

Posted

技术标签:

【中文标题】如何将现有数组值分配给数组指针?【英文标题】:How do I assign existing array values into an array pointer? 【发布时间】:2017-03-10 06:20:28 【问题描述】:

我有一个程序需要使用一个大数组(700,000 个元素)。我尝试按照普通数组分配它:

byte array1[700000] = 0xE8, 0x39, 0xF4, 0xB7, 0x69, ~~699995 other values~~ ;

但是,我遇到了分段错误。经过一番研究,有人建议我把它放在堆上。所以,我做到了:

byte* array1 = (byte*) malloc(700000 * sizeof(byte) /* Just to be safe */);

我以前使用过指针,通常我会使用循环来处理它。但是,在这种情况下,所有值都已经存在。我如何将所有这些都放在新的array1 中? 我无法使用外部文件(即我无法从 .txt 文件中读取)。


这不起作用(根据 Visual Studio 的初始化值太多):

byte* array1 = (byte*) malloc(700000 * sizeof(byte));
array1 =  ~~ 700k comma-separated values ~~ ;

我打算如何使用它的示例:

#include <stdio.h>

int main(int argc, char* argv[]) 
    byte big_array[700000] = 0xE8, 0x39, 0xF4, ~~699995 other values~~ ;
    some_function(big_array);
    return 0;

【问题讨论】:

为什么不尝试保留您的第一个代码 byte array1[10000]=... 但添加 static 以不将您的数组存储在堆栈中? 向我们提供该程序的完整上下文,这将有助于我们为您提供帮助。此外,malloc 在 C 中使用;在 C++ 中始终使用 new[] @qxz 正在处理它。 @J.Piquard 将其设为静态解决了问题。如果您将其发布为一个答案,我将很高兴接受它。 您需要修改这些值吗?还是它们是只读的? 【参考方案1】:

如果您能够使用 C++11 编译器,则应使用 std::vector

std::vector<byte> array1 = 0xE8, 0x39, 0xF4, 0xB7, 0x69, ~~9995 other values~~ ;

【讨论】:

以上是关于如何将现有数组值分配给数组指针?的主要内容,如果未能解决你的问题,请参考以下文章

将二维指针数组中的字符串分配给一维指针数组

如何将二维数组的一维分配给一个指针。

如何在 STL 中使用指向向量的指针,就像我们在将数组地址传递给另一个函数时将指针分配给数组一样?

C语言 如何给指针数组划分动态存储空间

将指针值分配给另一个指针值。我做错了吗?

释放分配给 void 指针数组的内存