| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:有关指针的问题
只看楼主 加入收藏
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:4 
有关指针的问题
贴个代码:
#include<stdio.h>
int main(void)
{
    int a[2][2];
    int (*w)[2];
    w=a;
    scanf("%d",*(w+1)+1);
    printf("%d\n",a[1][1]);
    printf("%#X\n",&a[1][1]);
    printf("%#X",&*(w+1)+1);
    getch();
    return 0;

}
如果我输入:4
输出:
4
0X12FEE0
0X12FEE4    为什么最后一个输出的地址总比上面一个输出的大(大了一个单元)? 在运行之前我想的是俩个地址是一样的,结果却不是的,是不是有地方写错了?但我感觉没有啊!  大家帮忙帮忙 谢啦!
搜索更多相关主题的帖子: return 
2011-10-04 18:34
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:5 
根据你的程序,(*(w+1)+1))=&a[1][1]
你的&*(w+1)+1=w+2=a+2,实际效果就是a类型后面两个偏移的位置,所以就是a[1][1]后面偏移一个a类型的位置。


[ 本帖最后由 pauljames 于 2011-10-4 20:39 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-10-04 20:29
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:5 
&*互相抵消,&*(w+1)+1简化为w+2
2011-10-05 22:23
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
收藏
得分:0 
回复 3楼 khaz
如果我想结果是俩个地址是一样的,那么我最后的PRINTF应该怎么样写勒。本来学指向数组的指针有点进度了,结果把你们的话一看。。。。晕了啦!可以详细的讲解下不
2011-10-06 15:34
greenleaf
Rank: 1
等 级:新手上路
帖 子:2
专家分:8
注 册:2011-5-22
收藏
得分:5 
printf("%#X",&*(w+1)+1);改为printf("%#X", *(w+1)+1);
即去掉&。
顺便说一句:你可以看C专家编程的相应章节来学习

学习是为了完善人生,而非享乐人生,追求卓越,成功就会在不经意间追上你……
2011-10-06 16:40
快速回复:有关指针的问题
数据加载中...
 
   



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

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