论坛首页 编程语言技术论坛

C语言中的多级指针

浏览 27192 次
精华帖 (2) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-28  
diogin 写道
abruzzi 写道
ray_linn 写道
这叫高级??????。。。。。。

我发现现在有越来越多人喜欢弄些*******,.......当成优雅的趋势。


一个盛满了水的杯子要再盛水,就要把原先的水先全部倒光。

文中的指针的用法,应该已经不算是入门级别的了。当然,例子可能有点不够复杂,没有函数指针,函数指针表(指向函数指针的指针),但是经验中,2层以上的指针就比较难控制了,而这个例子可以很好的看出对3层指针的控制过程,不知道这位大侠心目中的“高级”是什么样子的?

如有必要,大可以在后边略作叙述,指教一二,那是欢迎之至,但是这种冷嘲热讽,就难免不知其所云了。


你这例子就是入门级别的,不要自认为高级。
学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。


完全没有我的例子有多么“高级”的意思,我也没有说我的例子不是入门级的,本来就是嘛,如果你可以通过例子学习到多级指针的用法,那是最好的了,也正是在下的目的所在。C中的指针难以驾驭是肯定的,你可以自己写着试一下,可能给出的例子对于这个题目来说有点不准确。

至于后边的什么“学无止境,多拿些开源代码看看,体会下什么样的用法叫做“高级”。”之类,说句不好听的,我看开源代码,给开源社区贡献代码的时候,你还不知道在哪儿卖鱼蛋呢。

哈哈,玩笑,纯属玩笑。
0 请登录后投票
   发表时间: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[][]这种写法无论如何都是没有的。。。
0 请登录后投票
   发表时间: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++的飘。。。
0 请登录后投票
   发表时间:2009-06-29  
以前玩C的时候最烦的就是纠缠于犄角旮旯的细节,C++就更甚了。
事实上对我来说,这些东西不比脑筋急转弯更高级。
0 请登录后投票
   发表时间:2009-06-29  
mikeandmore 写道


写成char* argv[]不就不用折腾了么。。。@_@


这是二维的,如果三维,四维,五维呢??
0 请登录后投票
   发表时间:2009-06-29  
mikeandmore 写道

不过xxx[][]这种写法无论如何都是没有的。。。

这个只不过是你没有见过而已,不是没有,你可以写个代码测一下。而且有很多例子中都有这种形式的。
0 请登录后投票
   发表时间:2009-06-29  
文不对题,标题是“C语言中指针的高级用法”,内容却是最基础的应用。。。
0 请登录后投票
   发表时间:2009-06-29  
abruzzi 写道
mikeandmore 写道

不过xxx[][]这种写法无论如何都是没有的。。。

这个只不过是你没有见过而已,不是没有,你可以写个代码测一下。而且有很多例子中都有这种形式的。


....
这个明显是语法错误么。。。搞毛。。。
N维数组要指定N-1个最大维数。。。否则无法寻址。
0 请登录后投票
   发表时间:2009-06-29  
指针是把双刃剑,弊大于利的那种瑕疵剑。
0 请登录后投票
   发表时间:2009-06-29  
bachmozart 写道
diogin 写道
abruzzi 写道
mikeandmore 写道
那个啥。。。原型难道不是
int main(int argc, char* argv[]);
???

都说了,可以把指针理解成数组(当然不是完全等价),所以
char *argv[] == char **argv == char argv[][], 你可以分别试一下。


指针 != 数组。

找本《C专家编程》看看

lz就是想给新手们讲一下分享一下自己学习心得,你们这些高人都来凑什么热闹。。。

K&R里讲得很明白了,指针等价于数组,(翻页)当作为函数参数时。

那个万恶的翻页啊。。。

想到个笑话:投案自首是犯罪  (墙角转弯) 分子的唯一出路

囧。

 

3 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics