轻拿轻放 发表于 2013-11-12 00:10:49

很有意思的一个问题

#include<stdio.h>
#include<windows.h>
void main()
{
        int a;
        int i,*p;
        p=a;
        for(i=0;i<10;i++)
                scanf("%d",&a);
        printf("\n");
        for(i=0;i<10;i++)
                //{
                        if(i==0)
                        printf("%d",*p);
                else
                        printf(" %d",*(p+i));
           // }
        printf("\n");
        system("pause");
}
这个程序是实现数组的输出
但是在scanf("%d",&a);中感觉有错误
1、在数组中数组名表示的是数组的地址嘛,既然是这样那&a明显是错误的,就是等于把一个地址赋值给a了。
2、但是我在运行的时候是没有错误的,但是必须是用空格来间隔数据贴上图

然后是用逗号来间隔的

求各位献计献策啊!感激不尽


ˇ污.·点ゝ 发表于 2013-11-12 07:28:38

scanf("%d",&a);
明知道是a地址还用&取a地址!
for(i=0;i<10;i++)
      scanf("%d",&a);
这个for语句里的i在scanf中都没起作用!
应该这么写:
for(i = 0; i < 10; i++)
   scanf("%d", &a);
或者
for(i = 0; i < 10; i++)
   scanf("%d", a + i);
还有输出的语句不用if...else...了:
for(i = 0; i < 10; i++)
   printf("%d ", *(p+i));

Wzhiting 发表于 2013-11-12 09:40:51

for(i=0;i<10;i++)
      scanf("%d",&a);
你的数组在输入时一直指向a的首地址,并没有移动 所以结果应该从10开始输出,其他九个元素全为
随机数字

我觉得一点都没意思,我复制你的代码直接运行结果并没出现第一种结果

吴庆龙 发表于 2013-11-16 09:32:01

同意楼上的说法
页: [1]
查看完整版本: 很有意思的一个问题