我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 小问一下,关于二维数组传指针的问题。c++ 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

kala888



爱心大使勋章
性别: 帅哥 状态: 该用户目前不在线
头衔: 科大帅哥同盟幕后老大
等级: 前途无量
家族: YD一族
发贴: 8945
威望: 5
浮云: 855
在线等级:
注册时间: 2005-12-17
最后登陆: 2016-11-07

5come5帮你背单词 [ duty-free // a. 免税的 ]


小问一下,关于二维数组传指针的问题。c++

#include "iostream"
using namespace std;
 
void tt(int **p)
{int i;
    for(i=0;i<4;i++)
    {cout<<p<<" "<<(*p)<<endl;
    p++;}
}

int main(){
  int a[2][2]={1,2,3,4};
  int i,j;
  for(i=0;i<2;i++)
    for(j=0;j<2;j++)
      cout<<(&a[j])<<"  ";
cout<<endl;
    tt((int **)a); 
    system("pause");
    }

为什么同是 0x22ff60 地址。。取 其内容却不一样了。。。
传递过程作了何种改变产生的这种结果




0x22ff60  0x22ff64  0x22ff68  0x22ff6
0x22ff60 0x1
0x22ff64 0x2
0x22ff68 0x3
0x22ff6c 0x4
Press any key to continue . . .
顶端 Posted: 2007-12-06 23:32 | [楼 主]
hhbhhb



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 292
威望: 0
浮云: 1105
在线等级:
注册时间: 2006-09-21
最后登陆: 2009-03-16

5come5帮你背单词 [ amplify /'æmplifai/ vt. 扩大,加大,引伸,详述 ]


。。。肯定是这种结果的吧。。。。……
**是指针数组(指针的指针)。。就算你强制把一个int[][]转换成**它也不会变指针数组的啦……
顶端 Posted: 2007-12-07 10:43 | [1 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ employee /emploi'i:/ n. 受雇者,雇员 ]


Quote:
引用第1楼hhbhhb于2007-12-07 10:43发表的  :
。。。肯定是这种结果的吧。。。。……
**是指针数组(指针的指针)。。就算你强制把一个int[][]转换成**它也不会变指针数组的啦……

**不是指针的数组,**是指向指针的指针,两者不是一个东西
int *pa[8] 这个才是指针的数组
int **pb 这个是指针的指针

PS:LZ你的第一个cout那里有问题~~~


[ 此帖被zhd32在2007-12-07 12:05重新编辑 ]
顶端 Posted: 2007-12-07 11:59 | [2 楼]
chris_zley



性别: 帅哥 状态: 该用户目前不在线
头衔: ╭(╯^╰)╮
等级: 荣誉会员
家族: 动漫联萌
发贴: 5622
威望: 1
浮云: 1291
在线等级:
注册时间: 2005-09-07
最后登陆: 2011-05-03

5come5帮你背单词 [ footnote /'futnəut/ n. (书中的)脚注;vt. 为…作脚注 ]


感觉没什么问题。。结果。。
顶端 Posted: 2007-12-07 21:35 | [3 楼]
wan520





性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
发贴: 1724
威望: 0
浮云: 1125
在线等级:
注册时间: 2006-02-20
最后登陆: 2010-11-04

5come5帮你背单词 [ change /teind3/ vt. 改变,更改交换,况换;vi. 改变,变更;n. 变化交换,零钱 ]


个人觉得也没问题啊?
顶端 Posted: 2007-12-08 11:53 | [4 楼]
kala888



爱心大使勋章
性别: 帅哥 状态: 该用户目前不在线
头衔: 科大帅哥同盟幕后老大
等级: 前途无量
家族: YD一族
发贴: 8945
威望: 5
浮云: 855
在线等级:
注册时间: 2005-12-17
最后登陆: 2016-11-07

5come5帮你背单词 [ junction /'d3əΛŋkən/ n. 接合点,交叉点,汇合点 ]


Quote:
引用第2楼zhd32于2007-12-07 11:59发表的  :

**不是指针的数组,**是指向指针的指针,两者不是一个东西
int *pa[8] 这个才是指针的数组
int **pb 这个是指针的指针

.......

第一个没问题。。是5c5显示不了的原因。。。。
顶端 Posted: 2007-12-08 19:42 | [5 楼]
再不斩



性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1414
威望: 0
浮云: 1413
在线等级:
注册时间: 2005-12-23
最后登陆: 2009-04-26

5come5帮你背单词 [ abuse /ə'bju:z, ə'bju:s/ vt. & n. 滥用,妄用,辱骂,诬蔑 ]


a本来就是一个指针,当类型强制转换时(指针->指针),a的值不会发生改变,然后会将a压栈,以供函数tt使用;而执行权限转移到tt时,当访问*p时,自然访问的就是a指向的内容,也就是数组第一个元素0x01了。
顶端 Posted: 2007-12-09 10:02 | [6 楼]
zihua





性别: 保密 状态: 该用户目前不在线
等级: 人见人爱
发贴: 4900
威望: 0
浮云: 1105
在线等级:
注册时间: 2006-03-06
最后登陆: 2008-06-29

5come5帮你背单词 [ motorcycle /'moutəsaikl/ n. 摩托车 ]


没有看出什么问题?
顶端 Posted: 2007-12-09 10:05 | [7 楼]
kala888



爱心大使勋章
性别: 帅哥 状态: 该用户目前不在线
头衔: 科大帅哥同盟幕后老大
等级: 前途无量
家族: YD一族
发贴: 8945
威望: 5
浮云: 855
在线等级:
注册时间: 2005-12-17
最后登陆: 2016-11-07

5come5帮你背单词 [ plumber /'plΛmə/ n. 管子工,钳管工 ]


Quote:
引用第6楼再不斩于2007-12-09 10:02发表的  :
a本来就是一个指针,当类型强制转换时(指针->指针),a的值不会发生改变,然后会将a压栈,以供函数tt使用;而执行权限转移到tt时,当访问*p时,自然访问的就是a指向的内容,也就是数组第一个元素0x01了。


a就是指向指针的指针。。。我只是传递不进tt函数才用的强制类型转换。

*(*a)为什么不等于*(*p)?
*(*p)会报错!
顶端 Posted: 2007-12-09 19:35 | [8 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.010687(s) query 7, Time now is:05-31 16:04, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号