下面是我的代码,我的数组大小是5,但为什么要输入六个数字才能输出数组
第10行 :scanf("%d\t", &p[i]); 这里格式控制符里多了 '\t' 符,应去除,改为:scanf("%d", &p[i]);
for ...
{
fflush(stdin);
scanf("%d", &p[i]);
}
【以下回答由 GPT 生成】
这是因为在代码中,p
指针实际上是指向数组arr
的首元素的地址,而不是整个数组。因此,&(p[i])
代表的是从arr
数组首元素地址开始的偏移量为i
的元素的地址。而在循环中,i
的值取自0到4,所以只需要输入5个数字即可正确输出数组。
检查一下你的输入,确保你只输入了5个数字。如果你输入了6个数字,程序将会访问到数组外的内存,并且导致未定义的行为。
这里是更新后的代码,修复了输入6个数字的问题:
#include <stdio.h>
#include <stdlib.h>
int main() {
int arr[5];
int *p = arr;
for(int i = 0; i < 5; i++) {
scanf("%d", &(p[i]));
}
for(int j = 0; j < 5; j++) {
printf("%d ", p[j]);
}
return 0;
}
请注意,我删除了scanf
语句中的制表符\t
,这是因为scanf
默认会跳过空白字符,包括制表符,所以不需要显式地输入制表符。通过这样的修改,现在你只需要输入5个数字即可正确输出数组。
【相关推荐】