鱼C论坛

 找回密码
 立即注册
查看: 1641|回复: 5

[已解决]新手,,,关于指针的问题求大神回答!!

[复制链接]
发表于 2015-6-3 22:42:03 | 显示全部楼层 |阅读模式

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

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

x
//对于一个数组的倒序打印
#include <stdio.h>

int main ()
{
        int *p, i, a[10];

        /*对数组进行赋值*/

        for( i = 0 ; i < 10 ; i++ )
        {
                scanf("%d ",a[i]);     //为什么我在输入十个数之后,,无论点多少个回车,,程序都不会向下执行了呢???
        }

        printf("\n");

        /*是指针指向数组的最后一个的地址*/
        p=&a[10];

        /*想通过指针的改变从后往前把数组里面数据倒着输出*/

        for( i=0 ; i<10 ; i++)
        {
                printf(" %d ",*(p-i));  // 如果上面数组输入的是,,0 1 2 3 4 5 6 7 8 9 ;可是按照这种方法输出的却是 0 9 8 7 6 5 4 3 2 1 ;
                                                       自己调试看了下,(p-i)的地址是&a[10],,可是*(p-i)却是0;??????实在不明白?、
        }
        return 0;
}

最佳答案
2015-6-4 17:24:22
淫令天下 发表于 2015-6-4 12:50
谢谢了,,,可是关于scanf ("%d",&a);  这句如果是进行循环输入的话总是不能正常进行,是软件的问题吗??

%d后边写了一个空格导致的。
#include <stdio.h>

int main ()
{
        int *p, i, a[10];
        
        for(i=0; i<10; i++)
        {
                scanf("%d", &a[i]);
        }
        
        printf("\n");
        
        p=&a[9];
        
        for( i=0 ; i<10 ; i++)
        {
                printf(" %d ",*(p-i));
        }

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

使用道具 举报

 楼主| 发表于 2015-6-3 22:42:47 | 显示全部楼层
自己给自己先顶一下:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-4 08:28:31 | 显示全部楼层
int a[10];有效元素是a[0],a[1]。。。a[9]这10个元素,不包括a[10]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-4 12:50:29 | 显示全部楼层
谢谢了,,,可是关于scanf ("%d",&a[i]);  这句如果是进行循环输入的话总是不能正常进行,是软件的问题吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-4 17:24:22 | 显示全部楼层    本楼为最佳答案   
淫令天下 发表于 2015-6-4 12:50
谢谢了,,,可是关于scanf ("%d",&a);  这句如果是进行循环输入的话总是不能正常进行,是软件的问题吗??

%d后边写了一个空格导致的。
#include <stdio.h>

int main ()
{
        int *p, i, a[10];
        
        for(i=0; i<10; i++)
        {
                scanf("%d", &a[i]);
        }
        
        printf("\n");
        
        p=&a[9];
        
        for( i=0 ; i<10 ; i++)
        {
                printf(" %d ",*(p-i));
        }

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-4 19:57:40 | 显示全部楼层
谢谢你了,,,问题解决了,,可是为什么在循环赋值的时候不能加空格,,如果scanf("%d %d",&a,&b);或者是scanf("%d %d ",&a,&b);这样就可以呢??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 01:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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