2

私が持っているとしましょう

char number[2] = "2";

私のコードでは、文字列として2番を取得しているため、charがあります。atoi を使用して、この char を int に変換します

int conv_number;
conv_number = atoi(number);
printf("Result : %d\n", conv_number);

これは私に結果を返します:2.今、私はこの値を配列に入れて、配列の結果を出力したいので、私は書きました

int array[] = {conv_number};
printf("%d\n",array);

残念ながら、私の結果は 2 ではなく -1096772864 です。何が欠けていますか。

4

3 に答える 3

9

arrayyour is int[]notを見逃しています。これは、数字形式パラメーターを使用するときにint期待される 2 番目の引数です。printf%d

printf("%d\n",array[0])配列の最初の値にアクセスしたいので、代わりに使用してください。

さらなる説明

この状況arrayでは、printf式は のように動作しint*ます。printf("%d\n",&array[0])最初の要素のアドレスとも呼ばれる を使用すると、同じ結果が得られます。アドレスに本当に関心がある場合は、%p代わりにフォーマット指定子を使用してください。

于 2013-07-17T11:10:55.073 に答える
2

printf("%d\n",array);では、array は (明らかに) int の配列であり、int*. の値はarray最初のセルの値 (たとえば、array[0]) ではなく、配列のアドレスに減衰します。

コードを複数回実行すると、おそらく異なる値になります (配列の場所は実行ごとに異なります)。

あなたは書く必要があります:printf("%d\n",array[0]); これはと同等ですprintf("%d\n",*array);

于 2013-07-17T11:15:24.397 に答える
1

配列のベースアドレスを出力しています。その代わりに、その配列アドレスに値を出力する必要があります。お気に入り、

printf("%d",array[0]);
于 2013-07-17T11:14:50.277 に答える