将 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<>,但这是一个单独的问题。
我已经分配了一块内存作为(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<>,但这是一个单独的问题。