锁定老帖子 主题:C语言中的多级指针
精华帖 (2) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-29
是 gcc 3 支持的怪异特性 …… 转成 char** 还行,不然就是一串 ?a ?a ……
|
|
返回顶楼 | |
发表时间:2009-06-29
abruzzi 写道 diogin 写道 abruzzi 写道 ray_linn 写道 这叫高级??????。。。。。。
我发现现在有越来越多人喜欢弄些*******,.......当成优雅的趋势。 一个盛满了水的杯子要再盛水,就要把原先的水先全部倒光。 文中的指针的用法,应该已经不算是入门级别的了。当然,例子可能有点不够复杂,没有函数指针,函数指针表(指向函数指针的指针),但是经验中,2层以上的指针就比较难控制了,而这个例子可以很好的看出对3层指针的控制过程,不知道这位大侠心目中的“高级”是什么样子的? 如有必要,大可以在后边略作叙述,指教一二,那是欢迎之至,但是这种冷嘲热讽,就难免不知其所云了。 你这例子就是入门级别的,不要自认为高级。 学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。 完全没有我的例子有多么“高级”的意思,我也没有说我的例子不是入门级的,本来就是嘛,如果你可以通过例子学习到多级指针的用法,那是最好的了,也正是在下的目的所在。C中的指针难以驾驭是肯定的,你可以自己写着试一下,可能给出的例子对于这个题目来说有点不准确。 至于后边的什么“学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。”之类,说句不好听的,我看开源代码,给开源社区贡献代码的时候,你还不知道在哪儿卖鱼蛋呢。 哈哈,玩笑,纯属玩笑。 就你这“高级”指针也好意思混开源?还混了七年?我靠…… 要不您给我 show 一下您都贡献了哪些代码,好让我这个卖鱼蛋的开开眼界? |
|
返回顶楼 | |
发表时间:2009-06-29
指针不难,难的是在脑袋里缓存着一堆内存数据的类型和指向,编程时能理清如何操作这些内存。另外,进程的虚拟地址空间如何布局,各类数据在内存里的归属,哪些只读,哪些API可以改变地址空间等等,这些才是考验C功力的地方。至于一些语法角落,或者说一堆指针的语法糖,能避开就避开,比如 char s[][] 这种声明,应该见一个砍一个。
|
|
返回顶楼 | |
发表时间:2009-06-29
diogin 写道 abruzzi 写道 diogin 写道 abruzzi 写道 ray_linn 写道 这叫高级??????。。。。。。
我发现现在有越来越多人喜欢弄些*******,.......当成优雅的趋势。 一个盛满了水的杯子要再盛水,就要把原先的水先全部倒光。 文中的指针的用法,应该已经不算是入门级别的了。当然,例子可能有点不够复杂,没有函数指针,函数指针表(指向函数指针的指针),但是经验中,2层以上的指针就比较难控制了,而这个例子可以很好的看出对3层指针的控制过程,不知道这位大侠心目中的“高级”是什么样子的? 如有必要,大可以在后边略作叙述,指教一二,那是欢迎之至,但是这种冷嘲热讽,就难免不知其所云了。 你这例子就是入门级别的,不要自认为高级。 学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。 完全没有我的例子有多么“高级”的意思,我也没有说我的例子不是入门级的,本来就是嘛,如果你可以通过例子学习到多级指针的用法,那是最好的了,也正是在下的目的所在。C中的指针难以驾驭是肯定的,你可以自己写着试一下,可能给出的例子对于这个题目来说有点不准确。 至于后边的什么“学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。”之类,说句不好听的,我看开源代码,给开源社区贡献代码的时候,你还不知道在哪儿卖鱼蛋呢。 哈哈,玩笑,纯属玩笑。 就你这“高级”指针也好意思混开源?还混了七年?我靠…… 要不您给我 show 一下您都贡献了哪些代码,好让我这个卖鱼蛋的开开眼界? 给开源贡献代码或者学习开源的代码根本没有什么好意思不好意思的说法,开源的主题思想就是软件自由化,而且我也不是在混,hoc, bochs我都参加过。至于七年什么的,不知道你在说什么,估计是信口开河的老毛病又犯了。 再者,没有人一上来就是高手,不过也有可能你例外。大家开始都是卖鱼蛋的,不过有的人比较善于学习,他后来就不卖鱼蛋了,有的人,一直保持着自己那本来的一杯子水,不肯倒掉迎接新的水,于是就一直是卖鱼蛋的了。 另:卖鱼蛋只是个例子,并非人身攻击,不要误会。 |
|
返回顶楼 | |
发表时间:2009-06-30
最后修改:2009-06-30
night_stalker 写道 是 gcc 3 支持的怪异特性 …… 转成 char** 还行,不然就是一串 ?a ?a ……
我好像知道它把[][]看成什么了。。。嗯。。。 好像就是* xxx[],而不是二位数组。。。。那个[][]和[][N]完全是不同的东西。。。。 这个明显是编译期bug么。。。 |
|
返回顶楼 | |
发表时间:2009-06-30
mikeandmore 写道 night_stalker 写道 是 gcc 3 支持的怪异特性 …… 转成 char** 还行,不然就是一串 ?a ?a ……
我好像知道它把[][]看成什么了。。。嗯。。。 好像就是* xxx[],而不是二位数组。。。。那个[][]和[][N]完全是不同的东西。。。。 这个明显是编译期bug么。。。 研究所为的看成什么对C是没有意义的,C有很多的hacks可以做,比如char *a[0]之类的声明很多人经常用,无非是为了方便,增强后续代码的可读性,和文面的意义关联不大。总之C是一门简单清晰的语言,语法上只是忠实翻译一些东西,比如&无非就是取址,具体赋予其什么样的意义取决于传统,设计,以及环境。 至于所谓的***,我觉得单个情况也就罢了,一般来讲最好还是用typedef把具体的意义抽象出来,否则不好读。 |
|
返回顶楼 | |
发表时间:2009-06-30
php源码中有很多超常的指针,大家可以去看下,看懂了应该很过瘾
|
|
返回顶楼 | |
发表时间:2009-06-30
最后修改:2009-06-30
char *a[0]
这类的定义挺有意思的,能做出一些面向对象的东西来。 还有Linux里面head_list也挺有意思的。 也有点面向对象的意思在里面。 |
|
返回顶楼 | |
发表时间:2009-06-30
现在的人说话都挺刻薄的
分享C语言或者Linux kernel 可以到chinaunix 那边去。 和这里不是一个级别的。 |
|
返回顶楼 | |
发表时间:2009-06-30
google_fans 写道 现在的人说话都挺刻薄的
分享C语言或者Linux kernel 可以到chinaunix 那边去。 和这里不是一个级别的。 虽说物以类聚,不过大家都是一步步走过来的,哪里都可以交流。我看这个论坛有些人就很有意思,别人说话刻薄,或者回小白贴也不恼怒,只是就着技术上接着讨论,这样的人多一些自然能成风气,说话刻薄的只会自讨没趣。 |
|
返回顶楼 | |