| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:菜鸟关于指针用用法的问题
只看楼主 加入收藏
陈宇水
Rank: 2
来 自:东莞
等 级:论坛游民
帖 子:29
专家分:34
注 册:2013-5-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
菜鸟关于指针用用法的问题
#include<stdio.h>
main()
{
    int t, a[10]={0,1,2,3,4,5,6,7,8,9};
    int *i;
    i=&a[0];
    for(t=0;t<10;t++)
    {printf("%d,%d,%d,%d,%d",a[t],i[t],*(a+t),*(i+t),*(i++));
    printf("\n");}
    return 0;
    }
为何第2和第4个数输出的答案不正确啊,我是菜鸟,求答复
2013-05-05 10:34
小小的C
Rank: 2
等 级:论坛游民
帖 子:31
专家分:22
注 册:2013-4-19
收藏
得分:0 
i++后循环式再i+t超出数组范围了吧

新手发言,勿怪。
2013-05-05 10:45
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:0 
变量名字好混乱

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-05-05 10:52
小小玉
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:47
专家分:156
注 册:2013-4-13
收藏
得分:3 
指针i的长度为4个字节,而数组里面的元素的长度为2个字节,指针每次加1,他所指向的在数组里面加2个字节,也就是
i[0]==0,i[1]==2,i[2]==4,i[3]==6,i[4]==8,之后的都超出了数组的范围。第四个和第二个是一样的。不知道你懂了没?
2013-05-05 11:06
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
你要明白,结果和你想的不一样,主要是由于数组是按下标处理,而指针则不是,它计算过一次,下一次它会以上一次为基础计算,所以你在循环的过程中,指针的变化比数组快,而且超过下标就会出错数,你看看下面的程序
#include<stdio.h>
main()
{
    int t, a[10]={0,1,2,3,4,5,6,7,8,9};
    int *i;
       for(t=0;t<10;t++)
    { i=&a[0];
        printf("%d,%d,%d,%d,%d",a[t],i[t],*(a+t),*(i+t),*(i++));
    printf("\n");
    }
    return 0;
    }
  

Maybe
2013-05-05 11:17
陈宇水
Rank: 2
来 自:东莞
等 级:论坛游民
帖 子:29
专家分:34
注 册:2013-5-5
收藏
得分:0 
回复 4楼 小小玉
很感谢你的宝贵意见,我明白你的意思,但我由一点不明的是,看下面程序
#include<stdio.h>
main()
{
    int i,a[10]={0,1,2,3,4,5,6,7,8,9};
    int *p;
    p=a;
    for(i=0;i<10;i++)
    printf("%d\t",p[i]);
    return 0;
    }
这个输出来的结果就是按顺序输出,不是如你所说的0,2,4,6,8输出,请问是什么回事啊

我是一个C语言初学者
2013-05-05 14:21
陈宇水
Rank: 2
来 自:东莞
等 级:论坛游民
帖 子:29
专家分:34
注 册:2013-5-5
收藏
得分:0 
回复 5楼 邓士林
我还是不太明白为何我的程序中第二和第四个数是0,2,4,6,8这样输出的

我是一个C语言初学者
2013-05-05 14:23
小小的C
Rank: 2
等 级:论坛游民
帖 子:31
专家分:22
注 册:2013-4-19
收藏
得分:2 
回复 6楼 陈宇水
不同的编译环境结果是不一样的tc是俩字节VC是4字节。所以十0 1 2 3 4  5。。。。。。

新手发言,勿怪。
2013-05-05 15:21
快速回复:菜鸟关于指针用用法的问题
数据加载中...
 
   



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

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