2

爪哇:

byte[] arr1=new byte[]{0x01};
String aa = "helloo";
short[] s1 = new short[1]; // **
s1[0] = 246;               // **

Object[] obj = new Object[]{s1,arr1,aa}

C:

signed char a1[] = {0x01};
char *str = "helloo";
short int st1[] = {246}; // **

char*  c [] = {st1,str1,c2};

是否short int st1[] = {246}正确?我收到了这个错误:
illegal implicit conversion from 'short *' to 'char *'”。如何将short分配给char?

4

5 回答 5

3
char*  c []

是指针数组,而不是字符数组。

使用类似的东西

short st1[] = { 246 };
char* str = "helloo";
char  c [] = {st1[0], str[0], str[1], str[2], str[3], str[4], str[5]};

str[i]获取单个字符,因为 'char* str' 指向数组的第一个元素。

如果您需要一个字符串数组,请制作它

char tmp[1024];
// itoa is the conversion of st1[0] to string
char* c[] = { itoa(st1[0], tmp, 10), str };
于 2012-07-26T11:17:19.560 回答
1

C++ 没有基本的 Object 类型。您必须将字符串全部转换为特定类型。

std::string wtf[]= { std::string(a1, a1+ 1), std::string(st1, st1+ 1), std::string(str) }; // don't forget to #include <string>
于 2012-07-26T11:19:18.827 回答
1

在 C 或 C++ 中,没有适用于所有类型的通用基类(如 Java 的Object),您可以使用的最好的方法是void* c[]=...;(void* 代表无类型指针,因此它可以保存任何内容)或显式转换为所需的类型(但它是未定义的通过字符指针访问short)。

于 2012-07-26T11:19:31.963 回答
1

投射st1char*. IE:

char*  c [] = {(char*)st1,str1,c2};

short*请注意,如果要获取正确的数据,则必须在访问它指向的元素时将指针转换回。

于 2012-07-26T11:18:54.630 回答
0

虽然强烈不推荐,但 c 中 las 行的大致等价物是:

void*  c [] = {st1,str1,c2};
于 2012-07-26T11:19:02.447 回答