请问为什么会输出这样的内容
#include
int main()
{
//c99语法支持
//变长数组-数组的大小是变量
int n = 9;
int arr[n];
int i = 0;
for(i = 0;i < 9;i++)
{
arr[i] = i;
printf("%d\n",arr);
}
return 0;
输出:
6421920
6421920
6421920
6421920
6421920
6421920
6421920
6421920
6421920
该回答引用ChatGPT
在这段代码中,输出的结果是 6421920 而不是数组中的值,是因为在 printf 函数中传递的是数组 arr 的地址,而不是数组元素的值。
更具体地说,代码中 printf 函数的第二个参数是 arr,它是一个指向数组第一个元素的指针。在 printf 函数中,使用 %d 格式符输出该指针所指向的整数值,这个整数值其实是数组的第一个元素的值,而不是整个数组的值。由于数组中的值是逐个赋值的,而指针地址是不变的,因此输出的结果是同一个地址上的值,即 6421920。
如果要输出数组中的值,可以使用下标操作符 [] 来访问数组元素,例如:
printf("%d\n", arr[i]);
这样就可以输出数组中的每个元素的值了。
printf("%d\n",arr);输出的是数组arr的首地址,应改为:printf("%d\n",arr[i]);