鱼C论坛

 找回密码
 立即注册
查看: 3453|回复: 3

[技术交流] 很有意思的一个问题

[复制链接]
发表于 2013-11-12 00:10:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<windows.h>
void main()
{
        int a[10];
        int i,*p;
        p=a;
        for(i=0;i<10;i++)
                scanf("%d",&a[i]);
        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[i]);中感觉有错误
1、在数组中数组名表示的是数组的地址嘛,既然是这样那&a[i]明显是错误的,就是等于把一个地址赋值给a[i]了。
2、但是我在运行的时候是没有错误的,但是必须是用空格来间隔数据贴上图
空格.jpg
然后是用逗号来间隔的
逗号.jpg
求各位献计献策啊!感激不尽


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i]);
或者
for(i = 0; i < 10; i++)
     scanf("%d", a + i);
还有输出的语句不用if...else...了:
for(i = 0; i < 10; i++)
     printf("%d ", *(p+i));
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-12 09:40:51 | 显示全部楼层
for(i=0;i<10;i++)
      scanf("%d",&a);
你的数组在输入时一直指向a的首地址,并没有移动 所以结果应该从10开始输出,其他九个元素全为
随机数字

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

我的结果

我的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-16 09:32:01 | 显示全部楼层
同意楼上的说法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 10:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表