免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[C] 以其昏昏,使人昭昭? [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
191 [报告]
发表于 2010-04-14 17:27 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
192 [报告]
发表于 2010-04-14 17:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
193 [报告]
发表于 2010-04-14 17:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
194 [报告]
发表于 2010-04-14 17:54 |只看该作者
本帖最后由 shan_ghost 于 2010-04-14 18:02 编辑

重定位的含义是: 每次程序运行,都会被分配到一个新的内存位置。

一个可重定位的代码,必须是通过段选择器来间接寻址的。这样,变量地址就代表了“当前内存段xx偏移位置的某个内存单元”;于是,每次程序运行,变量i的位置就可以千变万化——但只要根据段选择器内容+偏移修正一下,就可以重新找到它。

这就是 printf("%d", &i)的输出,每次运行都可能不同的原因。



另,那位python先生,这里是C/C++论坛。
我知道您对C++的引用毫无所知,但倘若因为这种一无所知而导致您理解不了我在说什么,那么请允许我不为您的稀里糊涂负责。

通过c++的引用机制,我们可以再定义一个标识符j,让j同样和i代表的那个变量关联:
int &j=i;
###
请问这段话中有几个变量?
water_wf 发表于 2010-04-14 14:28


拒绝回答这个问题,是因为我错了,还是问的人太蠢?

论坛徽章:
0
195 [报告]
发表于 2010-04-14 19:57 |只看该作者
“这首歌的名字叫做‘哈道克的眼睛(Haddocks'Eyes)’。”
“哦,歌的名字是这样,真的?”爱丽丝说道,想表现出一点兴趣。
“不,你并不明白,”骑士说道,看上去有些愠怒,“这是人们对它的名字的称呼,它真正的名字是‘很老很老的男人(The Aged Aged Man)’。”
“那么我是不是该说‘那首歌是这样称呼的’?”爱丽丝纠正自己的说法。
“不,不是这样,这是另外一码事!这首歌被称作‘手段和方法(Ways and Means)’,但这只是它被称作那样而已,你明白吗?”
“好了,那么这首歌到底是什么?”爱丽丝说道,此时她已经被完全搞糊涂了。
“我正要说到它,”骑士说道,“这首歌实际上是‘围坐门边(A-sitting On A Gate)’,调子是我自己创作的。”

                                                   ——《爱丽丝漫游奇境记》

论坛徽章:
0
196 [报告]
发表于 2010-04-15 02:00 |只看该作者
本帖最后由 eminem112 于 2010-04-15 02:49 编辑
回复  pmerofc


    该语法并没有错。
在ubuntu 9.10下,编写test.c:
int main() {
int a = 0;
i ...
ablo 发表于 2010-04-09 09:04


顶楼主的,从没读完过谈好强的,一本不知所云的书不如不读.

87楼的,你试试用 gcc -Wall -o test test.c

估计你也不会用-Werror的

如果不想走弯路请认真看K&R.

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
197 [报告]
发表于 2010-04-15 06:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
198 [报告]
发表于 2010-04-15 08:30 |只看该作者
算了,不跟你讨论了,继续看lz的原帖吧,
关于重定位你的定义简直就是胡扯了,静态重定位由连接器完成,动态重定位才需要地址变换参与。

一个坚持同一律的人,把c语言中变量,地址,标示符和编译时刻,运行时刻的变量,符号表
混为一谈的人,从你那里也得不到什么结果,没人不知道引用的含义,是你在c++,c,编译,汇编 ,
运行态,中扯来扯去吧。我看和你没有讨论的必要了。

在说最后一次,标示符在c语言中是一个语法规则和编译过程中的符号表,运行时刻的地址变换完全是不同层面的
概念。

重定位的含义是: 每次程序运行,都会被分配到一个新的内存位置。

一个可重定位的代码,必须是通过段选择 ...
shan_ghost 发表于 2010-04-14 17:54

论坛徽章:
0
199 [报告]
发表于 2010-04-15 08:40 |只看该作者
呵呵,
shan_ghost的概念中可是”连变量没有,只有标示符和地址啊“

标示符能代表地址吗???

lz在这里最好在解释下

autoregisterexternstatic是如何作为存储类型的,
我理解 register并不是作为一种变量类型定义的
事实上,如果考虑到register类别的变量
变量代表地址之说恐怕立刻就要晕倒了吧
pmerofc 发表于 2010-04-14 17:38

论坛徽章:
0
200 [报告]
发表于 2010-04-15 08:48 |只看该作者
”扫描求解“
谭犯得错误把c语言语法表达式和 编译过程中的词法分析和语法分析混淆了,估计他根本没搞明白。
更进一步的那位从来不正面的回答问题的先生又把运行时刻连接器和装配器再混淆进来,后生可畏,
不愧为青出于蓝而胜于蓝!

评:1.充满错误的想当然
      2.即使是作为“想当然”式的幻觉,其本身也是逻辑混乱、自相矛盾的
   ...
pmerofc 发表于 2010-04-15 06:43
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP