| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2866 人关注过本帖
标题:学习C时,遇到一个不能理解的问题,求大神指导,不胜感激
只看楼主 加入收藏
为瞬间停留
Rank: 1
等 级:新手上路
威 望:1
帖 子:14
专家分:4
注 册:2016-6-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
学习C时,遇到一个不能理解的问题,求大神指导,不胜感激

代码如下:
#include <stdio.h>
int main()
{
    int* p;
    int i;
    printf("请输入5个数:");
    for(i=0;i<5;i++)
    {
        scanf("%d",p+i);
    }
        printf("这5个数是:");
    for(i=0;i<5;i++)
    {
        printf("%d ",*(p+i));
    }
    return 0;
}


运行结果:
    请输入5个数:5 6 7 8 9
    这5个数是:2293556 6 7 8 9
    Process returned 0 (0x0)   execution time : 8.287 s
    Press any key to continue.


为什么输出的第一个感觉是内存地址?而我换成数组就对了,求指导。
代码:
#include <stdio.h>
int main()
{
    int a[5];
    int i;
    printf("请输入5个数:");
    for(i=0;i<5;i++)
    {
        scanf("%d",&a[i]);
    }
        printf("这5个数是:");
    for(i=0;i<5;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

结果:
    请输入5个数:5 6 7 8 9
    这5个数是:5 6 7 8 9
    Process returned 0 (0x0)   execution time : 18.165 s
    Press any key to continue.









搜索更多相关主题的帖子: execution continue 不胜感激 include return 
2016-06-13 11:18
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:4 
p是个野指针,你把赋值前后的值打印看看?
2016-06-13 11:54
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:4 
P指针没有明确的赋予一个安全的地址,可能值在运行中被覆盖了,这样写程序非常的不安全
2016-06-13 12:51
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
收藏
得分:4 
分辨调试了俩种指针奔溃,数组可行

慢慢调试
2016-06-13 18:10
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
收藏
得分:0 
数组的特点所以成功了。数组自带首地址。
指针(动作)按地址访问实际内容。
用纯指针(动作)需要变量保存地址。


scanf("%d",p+i);//P+i是指针变量(指针的名字)不是指针(地址,名词)
指针按作用不同可分为动词和名词
可恶的人类方言

慢慢调试
2016-06-13 18:31
寂兮廖兮
Rank: 2
等 级:论坛游民
帖 子:22
专家分:27
注 册:2016-6-13
收藏
得分:4 
问个问题啊,这边的return 0 是做什么用的?
2016-06-13 18:51
为瞬间停留
Rank: 1
等 级:新手上路
威 望:1
帖 子:14
专家分:4
注 册:2016-6-13
收藏
得分:0 
回复 5楼 hykj9495
刚开始是有警告,我回来用自己电脑试了一下,会崩溃,估计指针还是要初始化吧
2016-06-13 19:03
为瞬间停留
Rank: 1
等 级:新手上路
威 望:1
帖 子:14
专家分:4
注 册:2016-6-13
收藏
得分:0 
回复 6楼 寂兮廖兮
这个main返回值是int ,不然会有警告
2016-06-13 19:03
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:4 
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int* p;
    int i;
    p= (int *)malloc( sizeof(int)*5 );//给指针p开辟个5个整型大小的空间。这样指针就不会瞎指地方了,同时定下它的大小,以防数据溢出。
    printf("请输入5个数:");
    for(i=0;i<5;i++)
    {
        scanf("%d",p+i);
    }
        printf("这5个数是:");
    for(i=0;i<5;i++)
    {
        printf("%d ",*(p+i));
    }
    return 0;
}
2016-06-13 22:04
平常心q
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:120
专家分:550
注 册:2016-3-31
收藏
得分:4 
        在 int *p后加这两行代码即可按你要求输出了
       int a[5];
    p = a;
2016-06-14 12:01
快速回复:学习C时,遇到一个不能理解的问题,求大神指导,不胜感激
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019182 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved