| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4237 人关注过本帖, 1 人收藏
标题:[求助]二级指针
只看楼主 加入收藏
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

还有一点:请注意时机与效率的问题。


=×&D o I p R e E n C g T l X&×=
2006-04-21 16:15
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
或者你告诉我那本书上讲过吧。我看反汇编上就是连着的。
怀疑反汇编的存储器里的地址是真实的还是虚拟的。而且不是随机,一个int型挪4个字节。[ebp-4]是i,[ebp-8]是指针ip,如果接着再定义一个int型的指针是[ebp-0Ch]也就是[ebp-12]。
Bjarne 你知道是咋回事不?

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-04-21 16:22
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
地址1==(int q=1);
地址2==(int *q2=&q);
地址3==(int p=2);
地址4==(int *p2=&p);
地址是连接的。但变量是连接的吗?指针是连接的吗?

=×&D o I p R e E n C g T l X&×=
2006-04-21 16:27
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
你所说的地址连接只是排它连接。不是实际连接。

=×&D o I p R e E n C g T l X&×=
2006-04-21 16:29
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
不明白你在说什么。你的脾气似乎很大,撤了。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-04-21 16:32
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
小姐你可历害,能感到脾气似乎很大。看来我们还满来电的吗。
去看《程序编译原理》这本书。

=×&D o I p R e E n C g T l X&×=
2006-04-21 16:36
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 

把楼主的源程序放到Visual studio 2005中编译得到将是地址!!!!!!!!!


路漫漫其修远兮 吾将上下而求索
2006-04-21 18:32
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
是连续的
我跟踪结果是
int i
int * ip
是连续存储的,p指向ip,p++后指向i了。
IP的地址比I小4个
当*p++
则指&I;既*P=49

平时总结:一般指针与它指向的地址相连

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-22 13:31
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

这是楼上的验证的程序。指针的分配就是不连接的。如果是边接的那么结果就不会是0了。

#include <iostream>
using namespace std;
void f(int ** p)
{
cout<<"*p = "<<(long)*p<<endl;
cout <<"p=" <<(long)p<<endl;
*p++;
cout <<"p=" <<(long)p<<endl;
cout<<"*p = "<<(long)*p<<endl;//?里?什??出的是?49,而上面?出的是地址??

}
int main()
{
int i =49;
double j = 50;
int * ip = &i;
cout<<"ip = "<<(long)ip<<endl;
f(&ip);
return 0;
}


=×&D o I p R e E n C g T l X&×=
2006-04-22 13:40
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

排他连续是给人看的
不是给机器看的
而机器执行时只看排他排序之后的地址也就是人看的
中间有很多空间保存相关的内容
(我记得是
一般连续申请的变量占有连续空间(首先要这些变量在一个内存区域)
当一循环储存完成0-Z 或者不够用时改变储存的倒数第二位
再进行下一循环储存
系统分配空间也是有规则的
不知道说的对不,这是我的跟踪总结.


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-22 13:45
快速回复:[求助]二级指针
数据加载中...
 
   



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

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