c语言反序输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 04:15:28
动态分配一个能存储10个整型数字的空间,从键盘输入10个数后,要求在空间内逆序,请用指针完成。我的程序如下,但有点问题,
#include<stdio.h>
#include<malloc.h>
main()
{
int *p ,*q;
p=(int *)malloc(sizeof(int)*10); q=p;
for(;q<=p+9;q++)
scanf("%d ",q);
for(q=p+9;q>=p;q--)
printf("%d ",*q);

}

运行的时候要输入11个数的。。。
但输出的时候只对前面的10个数反序输出,不知道哪里出了问题。。
有高手可以解答吗?
我是用c -free编译~~ 前面如果是for的问题,但后面输出的时候为什么又没有输出11个的??

这段代码输入11个数是正常的.

因为在输入第10个数的时候,for循环还没有终止.所以在输入11个数的时候才根据for内条件判断循环终止.

#include<stdio.h>
#include<malloc.h>
main()
{
int *p ,*q;
p=(int *)malloc(sizeof(int)*10); q=p;
for(;q<=p+9;q++)
scanf("%d ",q);
for(q=q-1;q>=p;q--)
printf("%d ",*q);

}
q=p+9这错了++是改变q的值的在运行完第一个for语句后q=p+10

不应该啊
为什么你输入的时候会是11个数呢