数组中的转换导致错误的结果

dal*_*985 2 c arrays

让我们说我有

char number[2] = "2";
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我得到数字2作为字符串,这就是为什么我有char.现在使用atoi我将此char转换为int

int conv_number;
conv_number = atoi(number);
printf("Result : %d\n", conv_number);
Run Code Online (Sandbox Code Playgroud)

返回结果:2.现在我想把这个值放在一个数组中并打印数组的结果.所以我写了

int array[] = {conv_number};
printf("%d\n",array);
Run Code Online (Sandbox Code Playgroud)

不幸的是我的结果不是2而是-1096772864.我错过了什么;

Zet*_*eta 9

你错过了你arrayint[]不是int,这是printf你使用数字格式参数时的预期第二个参数%d.

printf("%d\n",array[0])改用,因为您想要访问数组中的第一个值.

进一步说明

在这种情况下array,你的printf表达式表现为int*.如果你要使用printf("%d\n",&array[0]),你会得到相同的结果,也就是第一个元素的地址.请注意,如果您真的对地址感兴趣,请使用%p格式说明符.