2006-12-01
请问我有没有学C的必要
关键字: C
本人在大学里面有学过C(就是谭浩强那本书),但是只学了一些非常简单的东西(类型 操作符 流程控制),指针更本没有接触过, 当时是因为课时不够,老师推脱。毕业后一直从事java方面的开发。对java也是非常感兴趣。收获也不少,但是前几天有个同学(搞。net的)说他想转行搞C++嵌入式。说那个技术更强。而且变化太少,不像java 。net那样天天有那么多东西要学。C++更底层, 技术变更更小。而且能够完全控制操作系统。能使他有满足感。
当然我不会转入C的行列的,因为我喜欢java, j2ee。 但是C一直是我的一块心病,更想揭开指针的神秘面纱。
请大师指点。
当然我不会转入C的行列的,因为我喜欢java, j2ee。 但是C一直是我的一块心病,更想揭开指针的神秘面纱。
请大师指点。
评论
ray_linn
2007-04-18
除了第一条外,都同意。
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.
现在看看半年前的贴子,真是感觉 自己 写的 真是 @#$@~%$&*~!@$%#
惭愧啊!
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.
simohayha
2007-04-18
c的声明很简单的。
先括号,再后缀,再前缀.
先括号,再后缀,再前缀.
ray_linn
2007-04-18
抛出异常的爱 写道
jack 写道
ajooTrustno1 写道
你在使用指针的时候,你一定要记住,他指向的东西到底是什么东西,如果你忘记了糊涂了,bug就来了。这就是头痛的地方,如果你能保持清醒的头脑,恭喜你,你是天生的C程序员。呵呵
说的真好,很多指针的bug就是这样来的,指针使用情况混乱,最终变的不可控制.做C/C++开发必须有个自我判断的习惯.
"今天状态是否足够好,头脑是否清醒,如果状态不好,头脑昏昏,那么就要停止开发.休息下.然后才能继续".不然bug就会出现一大堆
作java时都要看看是否状态好。。。不然作出N个类之后发现重名了。。。
java或者C#都可以通过编辑器和编译器来防止,但很不幸C++不行,每个函数指针指向函数A B C D(假设参数相同),必须要运行时才能发现。
我的好习惯是列表来记忆,要用的时候就抽卡片出来。
我用函数指针的机会不多--刻意的,不知道是高手还是低低手?
抛出异常的爱
2007-04-18
jack 写道
ajooTrustno1 写道
你在使用指针的时候,你一定要记住,他指向的东西到底是什么东西,如果你忘记了糊涂了,bug就来了。这就是头痛的地方,如果你能保持清醒的头脑,恭喜你,你是天生的C程序员。呵呵
说的真好,很多指针的bug就是这样来的,指针使用情况混乱,最终变的不可控制.做C/C++开发必须有个自我判断的习惯.
"今天状态是否足够好,头脑是否清醒,如果状态不好,头脑昏昏,那么就要停止开发.休息下.然后才能继续".不然bug就会出现一大堆
作java时都要看看是否状态好。。。不然作出N个类之后发现重名了。。。
ray_linn
2007-04-18
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
这个一点都不难,(*C[10]) 是函数指针数组,char* 返回参数,int **P 输入参数,跟着括号走就对了。
是哪个家伙故意不用typedef的,而且还用了c p这些毫无意义的名字,晚上开会批评一下.
C困难的地方是...你必须记得(*c[0]) (*c[1]) (*c[2])到底是干啥的...否则你就是自己挖坑自己埋.
不到万不得已,别没事申明堆函数指针来玩。
spinach
2007-04-18
runes 写道
dengyin2000 写道
本人在大学里面有学过C(就是谭浩强那本书),但是只学了一些非常简单的东西(类型 操作符 流程控制),指针更本没有接触过, 当时是因为课时不够,老师推脱。毕业后一直从事java方面的开发。对java也是非常感兴趣。收获也不少,但是前几天有个同学(搞。net的)说他想转行搞C++嵌入式。说那个技术更强。而且变化太少,不像java 。net那样天天有那么多东西要学。C++更底层, 技术变更更小。而且能够完全控制操作系统。能使他有满足感。
当然我不会转入C的行列的,因为我喜欢java, j2ee。 但是C一直是我的一块心病,更想揭开指针的神秘面纱。
请大师指点。
当然我不会转入C的行列的,因为我喜欢java, j2ee。 但是C一直是我的一块心病,更想揭开指针的神秘面纱。
请大师指点。
哥们,如果你J2EE一直都做的挺好的话,真的没有必要转过来做C 和 C++,做C 和 C++ 也没啥令你羡慕的。
如果真的要做嵌入式的话,很多在做上层应用时基本不会考虑的硬件问题也会接踵而来,变化也不小。
C++有什么底层的? 没有操作系统的支持,啥也玩不转,何谈能完全控制操作系统???
C++技术变更小吗? better c 到 模板 到boost,哪个我都不认为比掌握一个J2EE的框架来的简单。
而且,各个平台各个编译器各个厂商都有一套,够折腾的。
说到满足感,不知道是啥意思?
如果仅仅是智力上的挑战,那c++以外的好玩的东西多了去了,干吗非的在c++上较劲呢?
c++里面智力上的挑战好多都是折腾编译器的玩意,实用性相当有限,如果真用到工作中迟早自己砸自己的脚。
另外,真的不知道你说的“更想揭开指针的神秘面纱。”是何意思,指针有啥神秘的? 何必把没有掌握它当作
一块心病呢?
spinach
2007-04-18
xin_wang 写道
bigpanda 写道
runes 写道
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
这个不难吧,偶试答一个,错了请指教!
这是一个函数指针数组,size为10,名字为c,
所指的函数类型为: 返回类型为 char*,参数为 int**p
厉害厉害,加入C++圈子吧。
今天在论坛里瞎逛看到这个帖子,居然一下子就看懂了这个声明,难道是突然变成“天生能理解指针概念”的人了?
楼上的可真幽默
xin_wang
2007-04-18
bigpanda 写道
runes 写道
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
这个不难吧,偶试答一个,错了请指教!
这是一个函数指针数组,size为10,名字为c,
所指的函数类型为: 返回类型为 char*,参数为 int**p
厉害厉害,加入C++圈子吧。
今天在论坛里瞎逛看到这个帖子,居然一下子就看懂了这个声明,难道是突然变成“天生能理解指针概念”的人了?
林秋枫
2007-04-18
我也有楼主一样的疑问。
ozzzzzz
2006-12-02
刑天战士 写道
要是连指针都不懂,恐怕有必要,指针很重要的……
我是从汇编入门编程的,说实在话,现在我对指针也不是很明白,而且是愈来愈不明白。
jack
2006-12-02
ajooTrustno1 写道
你在使用指针的时候,你一定要记住,他指向的东西到底是什么东西,如果你忘记了糊涂了,bug就来了。这就是头痛的地方,如果你能保持清醒的头脑,恭喜你,你是天生的C程序员。呵呵
说的真好,很多指针的bug就是这样来的,指针使用情况混乱,最终变的不可控制.做C/C++开发必须有个自我判断的习惯.
"今天状态是否足够好,头脑是否清醒,如果状态不好,头脑昏昏,那么就要停止开发.休息下.然后才能继续".不然bug就会出现一大堆
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
bigpanda
2006-12-02
runes 写道
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
这个不难吧,偶试答一个,错了请指教!
这是一个函数指针数组,size为10,名字为c,
所指的函数类型为: 返回类型为 char*,参数为 int**p
厉害厉害,加入C++圈子吧。
ajooTrustno1
2006-12-01
俺没做过什么C编码,说说俺这个门外汉的看法。从语言的语法上来说,C的语法很简单,比Java简单。C中的指针,俺觉得从概念上来说也很简单,没什么复杂的,指向内存某块地址。(确切的说是指向内存代表某种数据类型或者函数调用的入口地址)。但是指针的使用,却没有什么语言级别的保证,你可以把一个本该指向字符的指针强转成指向函数,或者任意类型的指针。ok,错误就出来。换句话说,你在使用指针的时候,你一定要记住,他指向的东西到底是什么东西,如果你忘记了糊涂了,bug就来了。这就是头痛的地方,如果你能保持清醒的头脑,恭喜你,你是天生的C程序员。呵呵
tsinan
2006-12-01
bigpanda 写道
指针难个屁,根据我以前教学经验,一天搞定,再练习两天,主流用法三天精通。一个简简单单的东西给一帮庸师搞得没必要的复杂。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
当然下列用法还是有点挑战难度的:
char *(*c[10])(int **p);
来到C++圈子吧,我们教你。
这样的代码出现在我们的程序里,是要被打pp的。怎么维护呀~~
tsinan
2006-12-01
我想还是有必要学一下C的。
我以前也是接触JAVA比较多,基本上没用过C(除了在大学读数据结构的时候看过一阵),现在做了3个多月C,补充了n多知识(都是些做JAVA碰不到的,但是又总感觉绕不开的东西,包括一些概念),现在感觉对JAVA认识也比以前深刻了一些。
汇编,我想也是有必要学习一下的。至少能读懂简单的汇编程序吧。
我以前也是接触JAVA比较多,基本上没用过C(除了在大学读数据结构的时候看过一阵),现在做了3个多月C,补充了n多知识(都是些做JAVA碰不到的,但是又总感觉绕不开的东西,包括一些概念),现在感觉对JAVA认识也比以前深刻了一些。
汇编,我想也是有必要学习一下的。至少能读懂简单的汇编程序吧。
blueoxygen
2006-12-01
要搞底层不如更直接,读汇编去,当时学的时候那才感觉到,计算机一点儿都不聪明,它不为你做任何事,需要你为他做所有事~~~~
runes
2006-12-01
sevenbamboos 写道
写那么多星星干吗?typedef哪里去了?
还没有多到需要使用typedef得程度吧,稍微熟悉一点的看一眼就知道了。
复杂点的,才用的着typedef。
sevenbamboos
2006-12-01
写那么多星星干吗?typedef哪里去了?
- 浏览: 220243 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
我的相册
VB-seamless
共 13 张
共 13 张
最近加入圈子
最新评论
-
使用Terracotta和Tomcat建 ...
renavatior 写道"运行start.bat 9081 这样我们就启动了目 ...
-- by rainsf -
使用Terracotta和Tomcat建 ...
"运行start.bat 9081 这样我们就启动了目录9081中的tomcat ...
-- by renavatior -
广州3年多经验 5500的 ...
fucku 写道广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多, ...
-- by yongfan_420 -
广州3年多经验 5500的 ...
广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多,导致机会也没有这 ...
-- by fucku -
广州3年多经验 5500的 ...
想高工资就去厂家咯,老在集成商里面混能有多大个奔头
-- by fucku






评论排行榜