QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: yueyemingming

一个关于指针问题的程序,望大侠帮忙!

[复制链接]
发表于 2004-12-12 08:59:40 | 显示全部楼层
C: The C Programming Language是终极教程,其他的(中文的除了谭浩强那本)都是trash。
C++:不知道,偶以前最早学的时候那本太烂,后来用VC编程自己学过一些,但是不喜欢C++,所以基本不用C++编程,也没什么可推荐的,可以考虑Thinking in C++。
Java:知道了C和C++,Java只是少许语法差别和API差别而已,偶从来不花时间去学它,要学估计也是当C来写。学好C和C++是关键。
数据结构:以前有本上交大的写得不错,但是忘了。记得有本英文的用C写的经典教程,可以看看,名字忘了,因为从来不看。

C最大的难点是指针,但是当你把它想像成装了其它盒子名字的盒子以后就很容易懂了。当年我学C搞清楚指针就是靠老师的这个比方,其他的全忘了,这个从来没忘。
回复

使用道具 举报

发表于 2004-12-12 10:18:23 | 显示全部楼层
改成这样。

[code:1]
#include <stdlib.h>
#include <conio.h>

void getMemory( char **p )        //  <---------- 这里改
{
     *p = ( char * )malloc( 100 ) ;  // <----------这里改
}

void test( void )
{
     char *str = NULL ;
     getMemory( &str ) ;             // <----------这里改
     strcpy( str , " hello world ! " ) ;
     printf( "%s\n" , str ) ;
}

void main( void )
{
     clrscr() ;
     test() ;
     getch() ;
}
[/code:1]   

把指针部分,再看看,多做有关的练习,和多思考
回复

使用道具 举报

发表于 2004-12-12 10:36:54 | 显示全部楼层
We'll have a great future with the help of tii, yunfan etc.
回复

使用道具 举报

 楼主| 发表于 2004-12-12 12:13:58 | 显示全部楼层
小生来自于一个不出名的大专院校,自从没有升上此学校前,也就是在高中时期,虽然对编程就有极大的兴趣,不过当时还不知道编程是个什么东东。进入大学后,我认识了编程,且兴趣仍极浓,不过考虑学校的原因,老师教的也不好,考虑自己的原因,自己的资质太差,不能深刻透彻的领悟到C语言的全部,所以现在C语言学的极差。
在此,我再次的深深感激各位对我的教导,让我受益不尽,谢谢!
现在小生在北京市,一个不出名的小公司给填写代码,感觉还差的很,需要积极向大侠学习呀!
linux公社,真的很不错,有这么多的大侠们帮忙,我想我肯定能学到很多的知识的。
小生真的是想向与大侠们交个朋友!
小生的QQ号:52455883
添加时写上“大家一起进步就好了”,谢谢各位大侠!
回复

使用道具 举报

发表于 2004-12-12 12:36:00 | 显示全部楼层
[quote:ea5e383884="tii"]C: The C Programming Language是终极教程,其他的(中文的除了谭浩强那本)都是trash。
C++:不知道,偶以前最早学的时候那本太烂,后来用VC编程自己学过一些,但是不喜欢C++,所以基本不用C++编程,也没什么可推荐的,可以考虑Thinking in C++。
Java:知道了C和C++,Java只是少许语法差别和API差别而已,偶从来不花时间去学它,要学估计也是当C来写。学好C和C++是关键。
数据结构:以前有本上交大的写得不错,但是忘了。记得有本英文的用C写的经典教程,可以看看,名字忘了,因为从来不看。

C最大的难点是指针,但是当你把它想像成装了其它盒子名字的盒子以后就很容易懂了。当年我学C搞清楚指针就是靠老师的这个比方,其他的全忘了,这个从来没忘。[/quote]

老大,自己不学不要推荐别人也是这种态度。最起码你得说我不清楚你应该问问别人。

我说两个典故,设计C++的作者是希望使用C的程序员能快速掌握他设计的这种语言,所以使用了对基本C语法进行扩充的方法来设计C++语法。
而设计Java的设计者为了让C++的使用者能迅速转到Java,因此以C++的语法为基础设计的Java语法。

所以C不是C++的子集,C++也不是C的扩展,从本质上来说C++和Java的设计理念是相同的,他们和C是完完全全不一样的语言。由于C++和Java的实现机制不一样,决定了他们本身和相应的api库的设计概念也差的很大。
回复

使用道具 举报

发表于 2004-12-12 16:14:58 | 显示全部楼层
碰到这种问题,我一般求教于gcc.
-S只编译,不汇编.可以看到汇编代码.-a可以保留一些文件,包括汇编代码.
看汇编代码吧.
回复

使用道具 举报

 楼主| 发表于 2004-12-12 19:56:57 | 显示全部楼层
这位版主人也不错,不过我感觉(不要怪我说话太坦率):好象有些愤世嫉俗。其实每个人都有自己的人生态度,何必自己感觉不对的地方,就去批判别人呢。也许人家现在忙,或是在学别的什么东西呢!
回复

使用道具 举报

发表于 2004-12-13 04:37:02 | 显示全部楼层
不管什么程序设计语言,设计思想(结构化和面向对象)是本质的东西,语法和API只是皮毛上的差别。所以我说学好C和C++就够了,Java不学也罢。C和C++涉及到一些底层的东西,例如内存操作,指针操作,这些在Java里是不能透彻理解的。

老实说在我眼里所有的语言都是一样的,即使是汇编,也不过是赋值,条件,循环,函数而已,和C,C++,Java,perl,python没什么大差别。高级语言仅仅是让你写程序更方便而已。

当然有些人可能会说汇编和C不支持面向对象编程,C++和Java才是。其实不然,面向对象编程只是一种思想,和编程语言是不同的。C++和Java仅仅是让你写面向对象的程序方便了一点而已,说到面向对象思想,Unix里的文件描述符,窗口系统里的窗口对象,哪一个不是面向对象思想的体现?用C不也是写得好好的吗?
回复

使用道具 举报

发表于 2004-12-13 11:40:51 | 显示全部楼层
就我个人理解, 不同的语言用于不同的目的。

我个人的学习经验是, 先学C, 学好,另外,建议学c的时候看看汇编,这样
可以更清楚的了解程序背后的机制,对内存分配,指针,地址引用,函数调用,会理解的更深刻。

然后学java, java是很容易学习的语言, 也OO的更彻底(比起C++), 能很快给你面向对象的直观感受。

在有了面向对象的感受之后, 可以学C++了, 有java的OO思路, 看着文档,就掌握的快一点。

个人的经验, 大家情况都不同, 我是因为要用,才学,学了就做, 做多了就混的脸熟手也熟了,自己思考,发现适合自己的方法了。 在写程序的时候, 还是要根据需要来选择实现的语言。 其实一门语言能用的很纯熟,其他都很容易上手的。
回复

使用道具 举报

发表于 2004-12-13 13:43:41 | 显示全部楼层
[quote:4e5b613f86="tii"]不管什么程序设计语言,设计思想(结构化和面向对象)是本质的东西,语法和API只是皮毛上的差别。所以我说学好C和C++就够了,Java不学也罢。C和C++涉及到一些底层的东西,例如内存操作,指针操作,这些在Java里是不能透彻理解的。

老实说在我眼里所有的语言都是一样的,即使是汇编,也不过是赋值,条件,循环,函数而已,和C,C++,Java,perl,python没什么大差别。高级语言仅仅是让你写程序更方便而已。

当然有些人可能会说汇编和C不支持面向对象编程,C++和Java才是。其实不然,面向对象编程只是一种思想,和编程语言是不同的。C++和Java仅仅是让你写面向对象的程序方便了一点而已,说到面向对象思想,Unix里的文件描述符,窗口系统里的窗口对象,哪一个不是面向对象思想的体现?用C不也是写得好好的吗?[/quote]
我的意思是有什么问题热心回答,有什么推荐热心推荐,呵呵,至于应该学什么,或者什么不用看那就是因人而异,不能一概而论。
回复

使用道具 举报

 楼主| 发表于 2004-12-13 14:00:42 | 显示全部楼层
kakuyou这位版主说的正和我意。
除了自己学习什么因人而异外,还有一点我想告戒TII大侠的:社会不断的在进步,而计算机更是不可或缺的时代产物,而且人们对它的需求也是多方面的,而这些方面是不同的表现形式和不同的实现形式。人都是会寻找捷径的,这也是社会进步的规律,所以人们发明了很的程序设计方法与语言,用以更为方面的实现人们对计算机的不同需要。就向yunfan大侠所说的“不同的语言用于不同的目的”
因此此处有一个重点就是方便。如果用C做一个控制台下的应用程序非常的方面,可以用它做一个向FLASH那样的动画可就难上加难了。既然这样,(C就是C,面向对象就是面向对象,两种理论,我同意这个意见,不过他们之间存在一个支持与被支持的关系呀!),C不支持面向对象,所以用C来设计面向对象的程序就较难为实现;而JAVA支持面向对象,用它来设计面向对象的程序就较为容易了!
另外,并不是每个人要去做一样的工作的,都有自己不同的工作理想,因此,也就有不同的学习追求了!
回复

使用道具 举报

发表于 2004-12-13 14:09:21 | 显示全部楼层
it's enough we can benefit from this article and any discussion with goodwill is welcome.
回复

使用道具 举报

发表于 2004-12-13 20:53:15 | 显示全部楼层
(n & -n) == n
回复

使用道具 举报

发表于 2004-12-13 21:26:53 | 显示全部楼层
[quote:8247cfced7="dongni386"](n & -n) == n[/quote]么意思?
回复

使用道具 举报

发表于 2004-12-14 02:50:36 | 显示全部楼层
> 不管什么程序设计语言,设计思想(结构化和面向对象)是本质的东西,语法和API只是皮毛上的差别...高级语言仅仅是让你写程序更方便而已。

不争了,争这个没意思,我想说的上两句已经说得很清楚了,至于怎么理解,全看你的了。最后一点建议:编十年程序,学5-6种语言,再回头看看我写的这两句话,再想想。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 23:28 , Processed in 0.060939 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表