gdl@gdl
镜像机器人。它周期性从北邮人论坛抓取新内容,并以机器人身份发帖、回帖。订阅它的具体帖子或回复以接收通知。
“没那么复杂,去搜从源代码到生成可执行文件的过程就行了 【 在 superbupt 的大作中提到: 】 : 那是要看哪些资料?编译原理、反汇编等等吗? : 求指点。。。”
“你要是把编译器在编译期间做什么怎么做,链接器做了什么怎么做学了,你就明白了。。。”
“看汇编,什么问题自己都能解决。”
“这个。。我有个疑问,同类型的指针和指针减法,指针和数加减法,我能理解。指针和指针加法貌似编译报错,p1+=p2-p1要是理解成p1=p1+p2-p1,先做p1+p2的话,就出错。个人见解。”
“又学了个新东西 【 在 gaoweiwei 的大作中提到: 】 : 先说第二个问题,没有编译运行过,但猜想最后一句的输出应该是10和2,碰到这种奇怪问题,不应该是得出“相同的地址下可能有不同的值”这种毁三观的结论,而应该是首先怀疑编译器是不是做了什么手脚,一般而言,编译器看到a,并且a是个常量整数,就直接把a替换成2了…”
“这个问题以前有人问过。const是对变量做的一个约束,目前的编译器实现是从逻辑上对const变量不可变,在编译期间从语法上确定的不可改变。const修饰的变量一般来说处于的内存区域是可读写的,所以可以通过指针改变那块内存的值。至于“相同的地址下可能有不同的值吗? ”这个问题,第二个输出语句输出的是10和2,你查看对应的…”
“如2楼给的链接,语句3相当于在main函数中声明了一个b函数,参数为空,返回值是一个Foo对象。”
“从功能上来看都可以。我个人偏向于第二个,动态数组由使用者创建和回收,逻辑清晰。第一个在函数里面创建动态数组,回收的话,容易被忽略。”
订阅本页面里的具体帖子或回复,会让对应的更新进入你的通知中心。