| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 429 人关注过本帖
标题:C语言指针
只看楼主 加入收藏
陆嘉文
Rank: 1
来 自:江西
等 级:新手上路
帖 子:96
专家分:6
注 册:2011-11-10
结帖率:76.92%
收藏
 问题点数:0 回复次数:3 
C语言指针
int a[3][4]={1,3,5,7,
                 9,11,13,15,
                 17,19,21};
    printf("%d,%d\n",a,a+1);//1
    printf("%d,%d\n",(*a),(*a)+1);//2
    printf("%d,%d\n",(&*a),(&*a)+1);//3
    printf("%d,%d\n",(*&a),(*&a)+1);//4
我发现第一,三,四条输出语句输出结果是一样的,
我想问一下怎么回事啊!
&   * 会不会有抵消的作用啊
搜索更多相关主题的帖子: C语言 
2015-08-07 09:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
指针用%d,本身就是错的,应该用%p

C标准如是说:
……, &*E is equivalent to E(even if E is a null pointer), ……, *&E is a function designator or an lvalue equal to E.……
当然,即使不强调这一点,也是自然的
2015-08-07 09:54
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
%d会输出十进制形式的地址,%p会输出十六进制形式的地址。因为你的是二维数组所以1、3、4都是操作行指针,两个数之间相差一行数据的内存,而2加了括号后就只差一个数据的内存。

一片落叶掉进了回忆的流年。
2015-08-07 10:42
怪叔叔
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:1
帖 子:113
专家分:234
注 册:2013-9-22
收藏
得分:0 
简单的理解成已加再一减(&*a),然后再一减一加(*&a)
这不就相当于没加没减吗!
2015-08-07 12:54
快速回复:C语言指针
数据加载中...
 
   



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

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