| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 428 人关注过本帖
标题:小弟初学,再来请教个问题。
只看楼主 加入收藏
kybo04
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-16
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
小弟初学,再来请教个问题。
#include "stdafx.h"
using namespace std;

int main(int argc, char* argv[]){
    int a[2][3]={{0,1,2},{3,4,5}};
        cout<<&a<<endl;
        cout<<a<<endl;
        cout<<*a<<endl;
        
        cout<<endl;

    int b[3]={3,4,5};
        cout<<&b<<endl;
        cout<<b<<endl;
        cout<<*b<<endl;
            
    return 0;
}
运行结果:
0012FF30
0012FF30
0012FF30

0012FF24
0012FF24
3

小弟的疑问是,为什么二维数组里面,用cout<<*a输出的头个元素的地址,而一维元素用cout<<*b,输出的确是头个元素的值呢?

这是为什么,有什么不一样吗?
搜索更多相关主题的帖子: 初学 
2009-11-18 23:54
kybo04
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-16
收藏
得分:0 
额··没人知道吗?
2009-11-19 10:33
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
在二维数组里,a是一个地址,*a仍然是一个地址,**a才是二维数组里的第一个数值。而在一维数组里,a是第一个地址,*a才是第一个数值

顺境逆境切莫止境,得意失意切莫在意。
2009-11-19 11:23
quietstar
Rank: 2
来 自:虚无缥缈处
等 级:论坛游民
帖 子:28
专家分:98
注 册:2009-4-13
收藏
得分:10 
在二维数组里面,&a,a,*a,a[0]的值都是一样的,都是指向二维数组的地址。因为可以将a[2][3]这个二维数组看成是2个1维数组,即a[0]、a[1]存储的都是指针类型,a[0]=&a[0][0],a[1]=&a[0][0],*a运算获得的就是a[0]的地址,即&a[0][0]。而在一维数组b[3]里面,b存储的就是首元素的地址,因此*b操作返回b[0],即一维数组b[3]的第一个元素的值(不是地址!)。

流光穆然去,美梦随佳人。薄雾似成雨,芳樽清茶冷。郁郁清风外,悠然不复生。
2009-11-19 14:47
快速回复:小弟初学,再来请教个问题。
数据加载中...
 
   



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

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