将 int 值存储到 char* - C++?

Store int value into char* - C++?

我已经分配了一块内存作为(char *),我希望能够在其中存储一个整数。

char * arr = new char[50];
int num = 9;

for(int i = 0; i < sizeof(int); i++)
{
      *((int *)arr) = arr[i];
}

memcpy(&arr, &num, sizeof(num));

cout<<"Contents of arr: "<<arr<<endl;    

然而,我似乎在每次编译时遇到分段错误。我怎样才能解决这个问题?谢谢!

for 循环是不必要的。我不确定它试图完成什么。 memcpy 没问题,除了你正在获取 arr 的地址,它已经是一个指针。这将起作用:

char * arr = new char[50];
int num = 9;

memcpy(arr, &num, sizeof(num));

cout<<"Contents of arr: "<< ((int *)arr) <<endl;

也许您的 for 循环试图这样做:

char * arr = new char[50];
int num = 9;

*((int *)arr) = num;

cout<<"Contents of arr: "<< ((int *)arr) << endl;

那也行

编辑:数组的内容不能直接打印,至少没有任何意义(并且可能因为没有零终止而崩溃)。假设您希望它看起来像一个整数,我已经编辑了上面的代码。 C++ 纯粹主义者可能会反对使用 C 风格转换而不是 reinterpret_cast<>,但这是一个单独的问题。