| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:关于指针的问题, 为什么输出结果和我预计的不同呢?
取消只看楼主 加入收藏
leehermit
Rank: 1
来 自:贵州
等 级:新手上路
帖 子:13
专家分:3
注 册:2011-11-7
收藏
 问题点数:0 回复次数:4 
关于指针的问题, 为什么输出结果和我预计的不同呢?
程序代码:
#include <stdio.h>
int main(void)
{
    int *q, a[3];
    a[0]=4; a[1]=5; a[2]=6;
    q=a;
    //结果居然是输出4 6 5 4?!!! 我想的应该是4 4 5 6吧? 这是什么原因呢...
    printf("%d, %d, %d, %d\n", a[0], *q++, *q++, *q++);
    return 0;
}
2013-07-02 17:07
leehermit
Rank: 1
来 自:贵州
等 级:新手上路
帖 子:13
专家分:3
注 册:2011-11-7
收藏
得分:0 
回复 4楼 YJ_Hao
那我在C-Free的结果是 4 6 5 4 是肿么回事呢 - -
2013-07-02 19:35
leehermit
Rank: 1
来 自:贵州
等 级:新手上路
帖 子:13
专家分:3
注 册:2011-11-7
收藏
得分:0 
回复 3楼 yuhaibinhf
谢啦... 关键我是好奇为什么这样会输出4 6 5 4...
2013-07-02 19:36
leehermit
Rank: 1
来 自:贵州
等 级:新手上路
帖 子:13
专家分:3
注 册:2011-11-7
收藏
得分:0 
回复 4楼 YJ_Hao
*q++; q的指向不会进一个么... 难道下一个*q++; q还是指向第一个么... 肿么回事...
2013-07-02 19:44
leehermit
Rank: 1
来 自:贵州
等 级:新手上路
帖 子:13
专家分:3
注 册:2011-11-7
收藏
得分:0 
回复 8楼 yuhaibinhf
我问其他人搞懂了. printf的参数执行顺序是从右往左的! 这样就解释的通了, *q++ 先是指向第一个也就是4, 接着加1, 指向下一个了, 所以最后输出的结果是反过来的, 也就是6 5 4. 还有*q++跟编译器有关系, 理论上是会取值并移动一位的. 非常感谢, 共勉!
2013-07-02 20:28
快速回复:关于指针的问题, 为什么输出结果和我预计的不同呢?
数据加载中...
 
   



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

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