2

ジャワ:

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

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

子:

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

にキャストst1char*ます。すなわち:

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

short*正しいデータを取得したい場合は、ポインターが指す要素にアクセスするときにポインターをキャストする必要があることに注意してください。

于 2012-07-26T11:18:54.630 に答える
1

C++ には基本オブジェクト型がありません。すべての文字列を特定の型に変換する必要があります。

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 に答える
0

強くお勧めしませんが、c の las 行に相当するものは次のとおりです。

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