将int值存入char * - C ++?

时间:2016-03-12 20:23:13

标签: c++ casting memcpy

我已经将一块内存分配为(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;    

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

1 个答案:

答案 0 :(得分:1)

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&lt;&gt;,但这是一个单独的问题。