繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM