| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 637 人关注过本帖
标题:谁能给我解释解释,我有点懵了。
取消只看楼主 加入收藏
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
结帖率:78.26%
收藏
已结贴  问题点数:20 回复次数:3 
谁能给我解释解释,我有点懵了。
#include<iostream>
using namespace std;
main()
{
          int a[10]={1,2,3,4,5,6,7,8,9,0};
     int b[3][4];
     int (*p)[10];
     p=&a;
     int (*q)[4];
     q=b;     
     for(int i=0;i<10;i++)
     cout<<*(p+i)<<endl;
     cout<<sizeof(p+1)<<endl;
     for(int j=0;j<4;j++)
     cout<<*(q+j)<<endl;
     cout<<sizeof(q)<<endl;        
                                                                                       
}
我想问一下,为什么*(p+1)和*(p+2)相差28,而*(q+1)和*(q+2)却是相差10.
谁能给个详细点的解释,我对指针跟数组的关系不是很清楚。
搜索更多相关主题的帖子: namespace include 
2011-05-29 18:27
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
收藏
得分:0 
看了还是不明白为什么……
2011-05-29 21:27
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
收藏
得分:0 
int (*p)[10];是定义了int(*)[10]类型的指针p,它指向的类型是int[10],用数组a的首地址来初始化它:p=&a;语句cout<<*(p+i)<<endl;//输出数组每个元素的地址,我以为cout<<"*(p+2)-*(p+1)"<<":"<<*(p+2)-*(p+1)<<endl; 这一句的输出结果是4,但却是10。这个是我不明白的地方。还有哦,我定义了一个二维数组int b[3][4],然后用int (*q)[4](类型为int (*)[4],指向的类型为int [4])来指向它:q=b;这一句cout<<"*(q+2)-*(q+1)"<<":"<<*(q+2)-*(q)<<endl;的输出结果却是4.
这是为什么?
2011-05-29 22:08
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
收藏
得分:0 
呵呵,我稍微懂了,不仅要看指针的类型,指针的指向为类型,还要看同类型指针间相差的个数。
谢谢你们~~
2011-05-29 22:41
快速回复:谁能给我解释解释,我有点懵了。
数据加载中...
 
   



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

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