让我说我有
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。我错过了什么;
答案 0 :(得分:9)
您错过了array
int[]
而非int
,这是使用数字格式参数printf
时%d
的预期第二个参数}。
请改用printf("%d\n",array[0])
,因为您想要访问数组中的第一个值。
在这种情况下,array
表达式中的printf
表现为int*
。如果您使用printf("%d\n",&array[0])
,即第一个元素的地址,您将得到相同的结果。请注意,如果您真的对地址感兴趣,请改用%p
格式说明符。
答案 1 :(得分:2)
在表达式printf("%d\n",array);
中,array是一个int(显然)数组,类似于int*
。
array
的值不是第一个单元格的值(例如,数组[0]),而是衰减到数组的地址。
如果您多次运行代码,您可能会有不同的值(阵列位置会因一次运行而异)
你必须写:printf("%d\n",array[0]);
这相当于printf("%d\n",*array);
答案 2 :(得分:1)
您正在打印阵列的基地址。而不是你需要在该阵列地址打印值。等,
printf("%d",array[0]);