在char*中存储整数
Storing integers in char*
我是一个初学者,正在尝试一些东西。我如何将整数数组传递给c/c++中期望char*的函数,因为char的范围只有-128到127,但我想从整个整数范围存储数字。
这是我正在尝试的:
#include<stdlib.h>
#include<stdio.h>
int size = 12;
void print(char* array){
int i,j;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
printf("%d ",*(array+i*size+j));
printf("n");
}
int main(){
int array[size][size];
int i=0,j=0,k=0;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
array[i][j]=k++;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
printf("%d ",array[i][j]);
printf("n");
print((char *) array);
return 0;
}
在main函数中打印数组时,输出是正确的(数字0-143),但在print()函数中,输出是
0 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 4 0 0 0 5 0 0 6 0 0 0 7 0 0 8 0 0 00 0 0 0 0 10 0 0 0 0 11 0 0 0 13 0 0 0 14 0 0 0 15 0 0 0 16 0 0 00 17 0 0 18 0 0 19 0 0 20 0 0 21 0 0 22 0 0 23 0 0 0 24 00 0 25 0 0 26 0 0 0 27 0 0 28 0 0 29 0 0 0 30 0 0 0 31 0 0 0 320 0 0 33 0 0 0 34 0 0 0 35 0 0 0
我不知道我做错了什么。
注:我需要这个,因为我正在使用apache Zookeeper和set和get函数,它需要char*类型的参数为您的数据。
同样的方式,你可以使用任何数组或指针,例如send
用于套接字:你转换指针。
int data[DATA_SIZE];
...
send(s, (const char *) data, sizeof(data), 0);
这是非常常见的,因为许多函数即使对于通用数据也需要指向char
的指针。最大的问题是函数对数据做了什么
C和c++是不同的语言。
"Integer array"不是C类型。请具体,例如:
int my_array[42];
在c语言中,不传递数组,除非它是sizeof、一元&或_Alignof操作符的操作数,或者被用作初始化式,数组类型的表达式求值为指向数组第一个元素的指针的值。请参阅http://www.iso-9899.info/wiki/Code_snippets
中的"数组衰减"。在C语言中,总是可以将指向任何完整或不完整对象类型的指针强制转换为指向char *的指针。int *是指向完整对象类型的指针。知道了这些事实,下面的代码在函数体内是有效的:
int my_array[42];
char * what_i_want;
what_i_want = (char *) my_array;
然后你可以将'what_i_want'的值传递给任何接受char *参数的函数。
说了这些,你需要理解这个函数期望什么。分享函数和一些实际代码,然后也许有人能够提供更深入的见解,如何实现您的目标。
char *
也可以用来指向一个字符串,所以你可以尝试使用适当的转换(int -> string, string -> int)函数来传递这些。
如果你的邮政编码,我可以试着提供一个更详细的答案。
Char* -这是唯一的指针类型,但是您可以为这个函数提供任何您想要的东西。你可以这样做:
void func(char* aPointer)
{
int* arr = (int*)aPointer;
int firstInt = *arr;
...
}
当然,这是一种非常残酷的方式,所以在这种情况下你应该非常小心,做一些检查等等
void func(char* c)
{
...
}
int x[5] = {1,2,3,4,5};
func((char*)x);
- 添加存储在向量中的大整数的函数出现问题
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- 当我尝试将范围值存储为 8 位的固定宽度整数时,它向我显示一些其他值 [ASCII]
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 从文件中读取后,将分号分隔的整数存储到数组中
- 数组中存储的整数的旋转
- 获取由空格分隔的未知大小的单行输入,并将其存储到整数数组中
- 如何将自己的链表实现从存储整数更改为存储个人数据
- 在 void 指针中存储整数的往返安全性
- 字符串操作 C++ 在字符串之后存储整数
- 使用字符指针存储整数
- 在字节的一部分中存储整数的最快方法
- 如果您使一个char*ptr存储整数变量的地址,会发生什么
- C++元编程:按类型存储整数
- 使用 char* 存储整数
- 在char*中存储整数
- 在char数组中存储整数和添加