qq_32060049
32060049
采纳率94.4%
2015-10-21 08:51

C语言指针指向数组问题

已采纳

#include

int main(){
   int a[5];
   int *p,i;
   printf("please enter ten numbers:");
   for(i=0;i<5;i++){
      scanf("%d",&a[i]);
   }
   for(p=a;p<(a+5);p++)
      scanf("%d",*p);
   printf("\n");


   return 0;
}

代码如图,是课本上的例题,我运行后输入五个数字以后没有反应。而且还想问一下,将第二个for循环中的(a+5)改为(p+5)可以吗?

万分感谢!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • zhenhuax 守love唯诺 6年前

    1、需要输入10个数字,你的代码没有输出,当然没有反应。
    2、不可以修改。p<p+5不是永远成立了??p在++,这样会造成越界访问。

    点赞 评论 复制链接分享
  • liyuyihao liyuyihao 6年前

    你确定书上写的是 scanf("%d",*p);不应该是p吗,而且你没输出,你想有什么反应。

    点赞 评论 复制链接分享
  • q3733353520 我用双手-成就你的梦想 6年前

    把第二个scanf改为pritnf就可以打印了

    点赞 评论 复制链接分享
  • u012505618 cxlovu 6年前

    lz你的这段程序又没有什么打印结果的单纯的就是输入当然没有反应了
    将第二个for循环中的(a+5)改为(p+5),每次的p的值都是在变动的,这样就一直在循环中跳不出去了

    点赞 评论 复制链接分享
  • liangrun2012 liangrun2012 6年前

    不可以的,因为 for(p=a;p<(a+5);p++),每次p都是在移动的。p<(a+5)实际上就是为了控制不让指针指向的地址超出数组范围。

    点赞 评论 复制链接分享
  • CSDNXIAOS Robot-S 6年前

    最近学数据结构,在学数组与指针之间的关系的时候,发现以前一直没理解的一个问题。
    首先我们看看数组与指针的一些关系吧。如果我们定义一个数组int a[ ] = {1,1,2,3,5,8,},再把一个指针int *p = a;这句话我们该怎么理解呢?其实很简单,我们只要知道这个语句是定义了一个指向整型数组的指针变量p,并且p指向数组的首地址,后面的就迎刃而解了。而a代表的是数组的第一个元素的地址,我......
    答案就在这里:C语言数组与指针的问题
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    点赞 评论 复制链接分享

相关推荐