`
dengyin2000
  • 浏览: 1209992 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

请问我有没有学C的必要

阅读更多
本人在大学里面有学过C(就是谭浩强那本书),但是只学了一些非常简单的东西(类型 操作符 流程控制),指针更本没有接触过, 当时是因为课时不够,老师推脱。毕业后一直从事java方面的开发。对java也是非常感兴趣。收获也不少,但是前几天有个同学(搞。net的)说他想转行搞C++嵌入式。说那个技术更强。而且变化太少,不像java 。net那样天天有那么多东西要学。C++更底层, 技术变更更小。而且能够完全控制操作系统。能使他有满足感。

当然我不会转入C的行列的,因为我喜欢java, j2ee。 但是C一直是我的一块心病,更想揭开指针的神秘面纱。

请大师指点。
分享到:
评论
35 楼 ray_linn 2007-04-18  
除了第一条外,都同意。
34 楼 runes 2007-04-18  
又有人翻老贴, sigh~
现在看看半年前的贴子,真是感觉 自己 写的  真是 @#$@~%$&*~!@$%#

惭愧啊!

Btw:

函数指针一般作为 结构体成员的 方式 比较常见, 同时引起误用相对数组方式而言也较少.
另外, C的精神 之一 就是 相信 程序员.

The Committee kept as a major goal to preserve the traditional spirit of C. There are many facets of the spirit of C, but the essence is a community sentiment of the underlying principles upon which the C language is based. Some of the facets of the spirit of C can be summarized in phrases like
1. Trust the programmer.
2. Don't prevent the programmer from doing what needs to be done.
3. Keep the language small and simple.
4. Provide only one way to do an operation.
5. Make it fast, even if it is not guaranteed to be portable.
The last proverb needs a little explanation. The potential for efficient code generation is one of the most important strengths of C. To help ensure that no code explosion occurs for what appears to be a very simple operation, many operations are defined to be how the target machine's hardware does it rather than by a general abstract rule.
33 楼 simohayha 2007-04-18  
c的声明很简单的。
先括号,再后缀,再前缀.
32 楼 ray_linn 2007-04-18  
抛出异常的爱 写道
jack 写道
ajooTrustno1 写道
你在使用指针的时候,你一定要记住,他指向的东西到底是什么东西,如果你忘记了糊涂了,bug就来了。这就是头痛的地方,如果你能保持清醒的头脑,恭喜你,你是天生的C程序员。呵呵


说的真好,很多指针的bug就是这样来的,指针使用情况混乱,最终变的不可控制.做C/C++开发必须有个自我判断的习惯.

"今天状态是否足够好,头脑是否清醒,如果状态不好,头脑昏昏,那么就要停止开发.休息下.然后才能继续".不然bug就会出现一大堆


作java时都要看看是否状态好。。。不然作出N个类之后发现重名了。。。


java或者C#都可以通过编辑器和编译器来防止,但很不幸C++不行,每个函数指针指向函数A B C D(假设参数相同),必须要运行时才能发现。

我的好习惯是列表来记忆,要用的时候就抽卡片出来。

我用函数指针的机会不多--刻意的,不知道是高手还是低低手?
31 楼 抛出异常的爱 2007-04-18  
jack 写道
ajooTrustno1 写道
你在使用指针的时候,你一定要记住,他指向的东西到底是什么东西,如果你忘记了糊涂了,bug就来了。这就是头痛的地方,如果你能保持清醒的头脑,恭喜你,你是天生的C程序员。呵呵


说的真好,很多指针的bug就是这样来的,指针使用情况混乱,最终变的不可控制.做C/C++开发必须有个自我判断的习惯.

"今天状态是否足够好,头脑是否清醒,如果状态不好,头脑昏昏,那么就要停止开发.休息下.然后才能继续".不然bug就会出现一大堆


作java时都要看看是否状态好。。。不然作出N个类之后发现重名了。。。
30 楼 ray_linn 2007-04-18  
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。

当然下列用法还是有点挑战难度的:

char *(*c[10])(int **p);

来到C++圈子吧,我们教你。



这个一点都不难,(*C[10]) 是函数指针数组,char* 返回参数,int **P 输入参数,跟着括号走就对了。


是哪个家伙故意不用typedef的,而且还用了c p这些毫无意义的名字,晚上开会批评一下.


C困难的地方是...你必须记得(*c[0]) (*c[1]) (*c[2])到底是干啥的...否则你就是自己挖坑自己埋.

不到万不得已,别没事申明堆函数指针来玩。
29 楼 spinach 2007-04-18  
runes 写道
dengyin2000 写道
本人在大学里面有学过C(就是谭浩强那本书),但是只学了一些非常简单的东西(类型 操作符 流程控制),指针更本没有接触过, 当时是因为课时不够,老师推脱。毕业后一直从事java方面的开发。对java也是非常感兴趣。收获也不少,但是前几天有个同学(搞。net的)说他想转行搞C++嵌入式。说那个技术更强。而且变化太少,不像java 。net那样天天有那么多东西要学。C++更底层, 技术变更更小。而且能够完全控制操作系统。能使他有满足感。

当然我不会转入C的行列的,因为我喜欢java, j2ee。 但是C一直是我的一块心病,更想揭开指针的神秘面纱。

请大师指点。



哥们,如果你J2EE一直都做的挺好的话,真的没有必要转过来做C 和 C++,做C 和 C++ 也没啥令你羡慕的。

如果真的要做嵌入式的话,很多在做上层应用时基本不会考虑的硬件问题也会接踵而来,变化也不小。

C++有什么底层的? 没有操作系统的支持,啥也玩不转,何谈能完全控制操作系统???

C++技术变更小吗? better c 到 模板 到boost,哪个我都不认为比掌握一个J2EE的框架来的简单。
而且,各个平台各个编译器各个厂商都有一套,够折腾的。

说到满足感,不知道是啥意思?
如果仅仅是智力上的挑战,那c++以外的好玩的东西多了去了,干吗非的在c++上较劲呢?
c++里面智力上的挑战好多都是折腾编译器的玩意,实用性相当有限,如果真用到工作中迟早自己砸自己的脚。

另外,真的不知道你说的“更想揭开指针的神秘面纱。”是何意思,指针有啥神秘的? 何必把没有掌握它当作
一块心病呢?











   
28 楼 spinach 2007-04-18  
xin_wang 写道
bigpanda 写道
runes 写道
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。

当然下列用法还是有点挑战难度的:

char *(*c[10])(int **p);

来到C++圈子吧,我们教你。



这个不难吧,偶试答一个,错了请指教!

这是一个函数指针数组,size为10,名字为c,
所指的函数类型为: 返回类型为 char*,参数为 int**p



厉害厉害,加入C++圈子吧。

今天在论坛里瞎逛看到这个帖子,居然一下子就看懂了这个声明,难道是突然变成“天生能理解指针概念”的人了? 


楼上的可真幽默
 
27 楼 xin_wang 2007-04-18  
bigpanda 写道
runes 写道
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。

当然下列用法还是有点挑战难度的:

char *(*c[10])(int **p);

来到C++圈子吧,我们教你。



这个不难吧,偶试答一个,错了请指教!

这是一个函数指针数组,size为10,名字为c,
所指的函数类型为: 返回类型为 char*,参数为 int**p



厉害厉害,加入C++圈子吧。

今天在论坛里瞎逛看到这个帖子,居然一下子就看懂了这个声明,难道是突然变成“天生能理解指针概念”的人了? 
26 楼 林秋枫 2007-04-18  
我也有楼主一样的疑问。
25 楼 ozzzzzz 2006-12-02  
刑天战士 写道
要是连指针都不懂,恐怕有必要,指针很重要的……

我是从汇编入门编程的,说实在话,现在我对指针也不是很明白,而且是愈来愈不明白。
24 楼 jack 2006-12-02  
ajooTrustno1 写道
你在使用指针的时候,你一定要记住,他指向的东西到底是什么东西,如果你忘记了糊涂了,bug就来了。这就是头痛的地方,如果你能保持清醒的头脑,恭喜你,你是天生的C程序员。呵呵


说的真好,很多指针的bug就是这样来的,指针使用情况混乱,最终变的不可控制.做C/C++开发必须有个自我判断的习惯.

"今天状态是否足够好,头脑是否清醒,如果状态不好,头脑昏昏,那么就要停止开发.休息下.然后才能继续".不然bug就会出现一大堆

23 楼 jigsaw 2006-12-02  
c is an array of pointer to a function which takes a pointer to pointer to int as param and returns a pointer to char
22 楼 bigpanda 2006-12-02  
runes 写道
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。

当然下列用法还是有点挑战难度的:

char *(*c[10])(int **p);

来到C++圈子吧,我们教你。



这个不难吧,偶试答一个,错了请指教!

这是一个函数指针数组,size为10,名字为c,
所指的函数类型为: 返回类型为 char*,参数为 int**p



厉害厉害,加入C++圈子吧。
21 楼 tsinan 2006-12-01  
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。

当然下列用法还是有点挑战难度的:

char *(*c[10])(int **p);

来到C++圈子吧,我们教你。



这样的代码出现在我们的程序里,是要被打pp的。怎么维护呀~~
20 楼 tsinan 2006-12-01  
我想还是有必要学一下C的。

我以前也是接触JAVA比较多,基本上没用过C(除了在大学读数据结构的时候看过一阵),现在做了3个多月C,补充了n多知识(都是些做JAVA碰不到的,但是又总感觉绕不开的东西,包括一些概念),现在感觉对JAVA认识也比以前深刻了一些。

汇编,我想也是有必要学习一下的。至少能读懂简单的汇编程序吧。

19 楼 blueoxygen 2006-12-01  
要搞底层不如更直接,读汇编去,当时学的时候那才感觉到,计算机一点儿都不聪明,它不为你做任何事,需要你为他做所有事~~~~
18 楼 runes 2006-12-01  
sevenbamboos 写道
写那么多星星干吗?typedef哪里去了?


还没有多到需要使用typedef得程度吧,稍微熟悉一点的看一眼就知道了。

复杂点的,才用的着typedef。
17 楼 sevenbamboos 2006-12-01  
写那么多星星干吗?typedef哪里去了?
16 楼 runes 2006-12-01  
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。

当然下列用法还是有点挑战难度的:

char *(*c[10])(int **p);

来到C++圈子吧,我们教你。



这个不难吧,偶试答一个,错了请指教!

这是一个函数指针数组,size为10,名字为c,
所指的函数类型为: 返回类型为 char*,参数为 int**p



相关推荐

    《你必须知道的495个C语言问题》

    《你必须知道的495个C语言问题》结构清晰,讲解透彻,是各高校相关专业C语言课程很好的教学参考书,也是各层次C程序员的优秀实践指南。 -----------------------------------------------------------------------...

    你必须知道的495个C语言问题

    1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决了,是吗? 1.4 新的64位机上的64位类型...

    txwb_iperf,局域网测速工具服务端和客户端

    天下网吧手机APP,你有我有全都有工具说明: 网吧局域网测速目前在网维工作中比较重要,特别是最近2.5G网吧局域网方案大热门,很多网吧需要在测试后对比测试前网速有没实质的提升。 这个时候用txwb_iperf工具很有...

    c#学习笔记.txt

    他们觉得现在的语言太多了,没有必要再多出一种来添乱子。但是当他们看完C#的文档后又开始高兴起来,因为C#是如此简单:事实上,简单正是C#最大的特点。除此之外,它还具有现代、面向对象、类型安全、版本控制、兼容...

    matlab的双曲线代码-CFD-1_2013:计算流体动力学代码

    计算流体动力学代码 该存储库包含一些C ++入门级计算流体力学代码(CFD)。 添加这些代码是为了展示一些良好的功能,例如管道,从而将绘图直接输出到GN​​Uplot。 这些代码更符合函数式编程方法,并且将输出网格...

    Reversing:逆向工程揭密

    这时候,我逐渐明白这是一种威力强大的技术,因为这意味着不管我有什么样的有关要处理软件的问题,我都可以非常容易地找到答案,即使我没有看过任何相关的文献资料或者正在处理的程序的源代码。本书就是要为每一个对...

    《iOS6开发指南》精彩书摘

    本书是智捷iOS课堂团队编写iOS系列丛书中的一本,目的是使一个有Objective-C基础的程序员通过本书的学习,能够从零基础到在App Store发布一款应用。全书分为4篇:  第一部分基础篇,介绍了iOS一些基础的知识。 第1...

    PLSQLDeveloper下载

    而比较用户对象功能则允许您对所选对象进行比较,将不同点可视化,并运行或保存应用必要变动的SQL脚本。 导出用户对象——该工具可以导出用户所选对象的DDL(数据定义语言)语句。您可以方便的为其他用户重新创建...

    基于JSP酒店管理系统设计软件程序源码+数据库+WORD毕业设计论文文档.zip

    c、安装配置好Tomcat(Tomcat7+,当前Tomcat7.0.69) 2)初始化数据库 a、创建db_jiudian数据库 b、执行数据库脚本文件,初始化数据库 3)部署酒店系统 4)启动测试 3 功能介绍 1)基本操作 2)客户管理 3...

Global site tag (gtag.js) - Google Analytics