锁定老帖子 主题:C语言中的多级指针
精华帖 (2) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-28
diogin 写道 abruzzi 写道 ray_linn 写道 这叫高级??????。。。。。。
我发现现在有越来越多人喜欢弄些*******,.......当成优雅的趋势。 一个盛满了水的杯子要再盛水,就要把原先的水先全部倒光。 文中的指针的用法,应该已经不算是入门级别的了。当然,例子可能有点不够复杂,没有函数指针,函数指针表(指向函数指针的指针),但是经验中,2层以上的指针就比较难控制了,而这个例子可以很好的看出对3层指针的控制过程,不知道这位大侠心目中的“高级”是什么样子的? 如有必要,大可以在后边略作叙述,指教一二,那是欢迎之至,但是这种冷嘲热讽,就难免不知其所云了。 你这例子就是入门级别的,不要自认为高级。 学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。 完全没有我的例子有多么“高级”的意思,我也没有说我的例子不是入门级的,本来就是嘛,如果你可以通过例子学习到多级指针的用法,那是最好的了,也正是在下的目的所在。C中的指针难以驾驭是肯定的,你可以自己写着试一下,可能给出的例子对于这个题目来说有点不准确。 至于后边的什么“学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。”之类,说句不好听的,我看开源代码,给开源社区贡献代码的时候,你还不知道在哪儿卖鱼蛋呢。 哈哈,玩笑,纯属玩笑。 |
|
返回顶楼 | |
发表时间:2009-06-28
abruzzi 写道 mikeandmore 写道 那个啥。。。原型难道不是
int main(int argc, char* argv[]); ??? 都说了,可以把指针理解成数组(当然不是完全等价),所以 char *argv[] == char **argv == char argv[][], 你可以分别试一下。 那个,那个。。。 我的意思是 写成char* argv[]不就不用折腾了么。。。@_@ 不过既然说了这个问题。。。嗯。。 好像标准里面说过。。。 定义的变量,xxx var[],出来的是xxx* const var. 传参数的时候,xxx var[], 出来的是xxx* var 不过xxx[][]这种写法无论如何都是没有的。。。 |
|
返回顶楼 | |
发表时间:2009-06-28
night_stalker 写道 扯些函数指针的事情 ……
万能函数指针。例如: int(...) 成员函数指针(MSVC 可以去掉 &): &SomeClass::func 静态成员指针的用法和普通的函数指针一样。 但是非静态成员函数指针得用丑陋难用的 mem_fun_ref<.......... 转换 …… 从实例得到函数指针(->* 和 .*): SomeClass* x = new SomeClass(); auto f = x->*func; SomeClass y; auto g = y.*func; 注:auto 关键字得在 GCC 4.4 或者 msvc 10 以后的版本用。 继承后的非静态成员函数指针很复杂,每个编译器处理方式不一样,最好别碰 …… 从来无视C++的飘。。。 |
|
返回顶楼 | |
发表时间:2009-06-29
以前玩C的时候最烦的就是纠缠于犄角旮旯的细节,C++就更甚了。
事实上对我来说,这些东西不比脑筋急转弯更高级。 |
|
返回顶楼 | |
发表时间:2009-06-29
mikeandmore 写道 写成char* argv[]不就不用折腾了么。。。@_@ 这是二维的,如果三维,四维,五维呢?? |
|
返回顶楼 | |
发表时间:2009-06-29
mikeandmore 写道 不过xxx[][]这种写法无论如何都是没有的。。。 这个只不过是你没有见过而已,不是没有,你可以写个代码测一下。而且有很多例子中都有这种形式的。 |
|
返回顶楼 | |
发表时间:2009-06-29
文不对题,标题是“C语言中指针的高级用法”,内容却是最基础的应用。。。
|
|
返回顶楼 | |
发表时间:2009-06-29
abruzzi 写道 mikeandmore 写道 不过xxx[][]这种写法无论如何都是没有的。。。 这个只不过是你没有见过而已,不是没有,你可以写个代码测一下。而且有很多例子中都有这种形式的。 .... 这个明显是语法错误么。。。搞毛。。。 N维数组要指定N-1个最大维数。。。否则无法寻址。 |
|
返回顶楼 | |
发表时间:2009-06-29
指针是把双刃剑,弊大于利的那种瑕疵剑。
|
|
返回顶楼 | |
发表时间:2009-06-29
bachmozart 写道
diogin 写道
abruzzi 写道
mikeandmore 写道
那个啥。。。原型难道不是
int main(int argc, char* argv[]); ??? 都说了,可以把指针理解成数组(当然不是完全等价),所以 char *argv[] == char **argv == char argv[][], 你可以分别试一下。 指针 != 数组。 找本《C专家编程》看看 lz就是想给新手们讲一下分享一下自己学习心得,你们这些高人都来凑什么热闹。。。 K&R里讲得很明白了,指针等价于数组,(翻页)当作为函数参数时。 那个万恶的翻页啊。。。 想到个笑话:投案自首是犯罪 (墙角转弯) 分子的唯一出路 囧。
|
|
返回顶楼 | |