在c中创建short int数组,如java short []

时间:2012-07-26 11:12:54

标签: java c++ c

爪哇:

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 *'”。 如何为char分配短片?

5 个答案:

答案 0 :(得分: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 };

答案 1 :(得分:1)

st1投射到char*。即:

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

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

答案 2 :(得分:1)

C ++没有基础对象类型。您必须将所有字符串转换为特定类型。

std::string wtf[]= { std::string(a1, a1+ 1), std::string(st1, st1+ 1), std::string(str) }; // don't forget to #include <string>

答案 3 :(得分:1)

在C或C ++中,没有适用于所有类型的公共基类(如Java Object),您可以使用的最好的是void* c[]=...;(void *代表无类型指针,因此它可以保存任何内容)或明确地转换为所需的类型(但是通过char指针访问短路时未定义)。

答案 4 :(得分:0)

虽然高度不推荐,但c中las线的粗略等价是:

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