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

您错过了arrayis int[]not ,这是您使用数字格式参数时int预期的第二个参数。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 数组(显然),它类似于 an int*。的值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 回答