浅谈C语言学习方法
本人是一名windows程序写作员,使用的语言是C语言其他语言了解一点点,但并不擅长可能对于初学者来说,首先就是选择一门程序设计语言当然,今天我将要说的不是这方面每种语言都有它所擅长的领域与层面当然对于其他非C语言我是一名门外汗,我也不会站在C语言的立场去谈论其他任何一门语言好了,在开始进入正题之前,我想谈谈个人对C的一些看法:
C语言是一种早期的计算机语言,最初诞生目的是为了提供一种基于UNIX系统的工作语言但是,后来却被越来越多的人发现它的优点与潜力C本身比较接近底层,适合开发系统软件甚至是操作系统我个人也认为它是界于高级语言与汇编语言之间的中级语言C语言是一门结构化语言(我认为主要是指它的控制结构如:if if-else while for等等)C程序设计上有提到"自顶向下,逐步深入"以函数为原子功能模块对于大型的程序来说模块化是很重要的,有一句话说的很好"优质的程序首先就是便与人们之间的相互讨论与交流,其次才是执行效率"当然我个人认为任何一名程序写作者,都应该养成一种特定的思维方式,以程序的思维方式来思考程序的实现前提就是要足够的来了解计算机底层技术要不我想就连学习都是很困难的,凡事都是一个思路的问题嘛标准的来衡量,C应该算是高级语言阵营的一份子可很多有C语言开发经验的程序写作者通常亲切的称C为界于底级语言与高级语言之间的中级计算机语言当然不是因为C比高级语言要差,之所以这么认为是因为C既具有高级语言的结构化与可理解性又具有低级语言的高效率同时C的移植性也是非常不错的,大家应该知道,越是接近硬件,接近底层的语言就越加的依赖硬件环境,也就是我们所说的设备相关性C这一点做的是非常棒的说了这些,在从另一个角度去分析C语言当然每种语言都有它自身的优缺点,C也一样比如在现在高级语言与顶层技术的角度来看的话,C最大的缺陷就是Data与算法的分离举一个例子: 对于一个拥有几千行甚至上万行Code的程序来说,如果修改Data,比如我在Structure中增加一个字段,可能为此我的整个程序都要改动,这使得程序的可重用性大大降低开发周期也大大的延长但是在底层的角度来看这也正是C的优点我为什么要这么说呢?我个人认为在求解与实现一个小问题的时候,我们可以写出一个通用的模块处理不同的Data当然比如某些经常用到的,基于数据结构的一些常用算法我们可以写出来在开发的时候我们可以直接把预先编写的模块插入到我们的程序中去,这不也是大大低了开发周期吗?初学者完全可以根据自己的需求来编写一个自定义库好了,说了这些,有些地方我理解错了,还请各位指出来,交流是很重要的,前提是要把自己的心态放平下面我将谈论本问的重点,也就是如何来学习C语言,是给那些初学者读的
正题部分:
有人可能会说:学习还用你教啊,谁没上过学啊其实我今天要说的只是,站在一个过来人的角度,来分析与解释学习C语言的过程中比较困难的地方当然我个人也会对比较具体的问题进行解释(个人看法)我一直在强调个人看法,我是想让大家明白,对于同一个问题大家可能都很难达成统一的意见,希望批评的时候客气点就好喽!
初学者该看哪些书来入门:
在学习C语言之前,首先就要选择一本教材,对于初学者,我个人并不建议去读电子书籍,最好是买纸质书来学习比如比较有名的"C程序设计"就很不错,尤其是第二版我也看过,比较适合中国人来初学整本书都在全面系统的讲解C的语法结构,构成C的语言元素包括:数据类型,支持的运算符,标识符(是由程序员按照命名规则起的名字,用于变量名,函数名,宏名等等),关键字(编译系统用于实现C内部功能的词,比如:转向goto和中断break等等)等看完这本书你基本上可以写一些简单的小程序,当然是DOS下的程序如果你想在进一步深入学习C的话,可以看"C陷阱与缺陷"这本书写这本书的作者是在Bell工作对C是非常精通的,应该算是大师级的人物了如果你暂时不想深入C的话,也没问题,因为此时你完全可以把C当作一种编程工具来使用,你要做的就是多写Code来让自己熟悉C语言经验是非常重要的,"经验是检验真理的唯一方法"当然你不会纸上谈兵,如果你有过多的开发经验的话,就知道在纸上或最初的设想的Code拿到计算机上来实现,最终会发现有很多地方都是不合理的,之前是没有办法想象到的在初学C的过程中,比如你会看"C程序设计"来初学C,当你学完每一章的时候要把习题来完成,这里就是考验你学到的知识了,看看你应用能力怎么样尤其是程序设计题目,比较有意思哪里不懂了可以翻回去看书中的解释如果没有解释或你还是不明白,可以去问别人,与其他人交流 bbs,QQ或Google直到你弄明白为止当你把问题最终解决的时候,我敢打赌,此时你一定很兴奋,或者是比较兴奋这个时候知识已经在你的大脑里了
下面我为你推荐几本不错的关于C语言籍:
C编程规范
C语言大全第四版 (个人感觉不错,里面有提及C标准方面的东西)
C和指针
The C programming Language (经典著作)
如果你要看电子书的话,以上几本书在Google上很容易就可以找到
关于C语言的初步理解:
对于初学者,会有太多的疑问,原因是你的知识面太小现在我为你解释一些C相关的东西目的是让你能够有一个大致清晰的方向,来给自己安排学习计划专业的来说,我们是或将是一名程序员,程序员当然就是要开发程序了对于软件开发方面我来解释下术语:
C,C++,ASM,Basic,Java 这些是计算机语言计算机语言很多,我就不多说了
Visual C++,Visual Basic, Microsoft研发的开发环境,开发环境包括:编译器,库函数(每种C语言编译器都支持标准库,同时它们也会扩展自己的库,所以很多比较以来库函数实现的程序员,在转向不同的开发环境的时候最初总是不使用的,会遇到很多问题),一些资源模板等等Visual 就是可视的意思,后面的就是语言Visual C++支持C与C++2种语言,是根据文件的扩展名来判断采用哪种编译内核
什么是"面向对象"与"面向过程" 其实是2种完全不同的程序设计思想,C语言是面向过程语言,而C++是面向对象语言在面向对象的语言中有"类(Class)"这个东西C中没有对象是由类来派生的一个实例,相反类就象是一个模板
什么是SDK SDK就是软件开发工具包(Software Development Kit)指的范围比较广,通俗的说,凡是能够与软件开发过程占上边的东西都属于比如:库文件,参考资料,接口函数,当然语言也应该属于
DDK就是设备驱动程序开发工具包
Turbo C: 这是一个比较精致的C语言编译器
理论上来说任何一门语言都可以在任何一种操作系统上运行,前提是操作系统要支持也就是我们所说的应用程序接口,比如Window API(Application Programming Interface),其实是Microsoft内部定义的接口函数用于实现一些Windows内部的功能一些对象的描述术语,在不同平台上是不同的,比如:Windows下的"调用",经常被称为"呼叫","返回"被称为"传回"
什么是"算法" 你最初只需要知道算法实际上就是对特定的Data进行运算的一段代码而已也可以认为在求解一道题目的时候,采取的方法与步骤的总称对于基本的C程序来说,实际上就是由Data与算法来组成的
什么是"数据结构" 如果要是系统的讲解,还需要一本书"数据结构",简单的说:是程序要处理的数据在内存中的存储与组织的方式,分为:物理结构与逻辑结构逻辑结构就是我们抽象化以后得到的大脑影象
什么是"函数库" 它们以文件的形式存储,是预先定义好的函数的集合,我们的程序可以直接调用当然前提是要包含它的头文件(库函数的原型声明)这些函数是在静态连接期间组成到exe文件中去的Windows又存在另一种库,叫做动态连接库(DLL)
GUI: 也就是"图形用户界面",就是我们在Windows上看到的,存在:菜单栏,滚动条与显示区域的窗口
GDI: 图形设备接口,从程序写作者的角度来看,其实GDI就是由上百个函数与数据形态和一些相关的数据结构所组成的
学习C语言的全过程:
仔细想想,实际上学习C语言,最初是应该先学习C语言的基础语法也就是学习C语言的组成部分一部分一部分的向下学知识要一点一点的巩固的本人假设你学习C语言是看"C程序设计"我认为你应该先把C程序设计仔细的看一便,这样你应该可以对整本书和C语言的整体组成结构有个大致的清晰了解不要认为学习只是在看书,看一便就可以了你应该学会记笔记,在记笔记的过程中,其实你就是在学习,从知识的分析,理解,归纳,到最后以自己的思维方式记下来,这整个过程就是把书中的知识抽象到你自己的脑袋里个人感觉学习效果非常好,不懂就问,要多多与人交流,要多思考,遇到问题自己先多想想,实在找不到问题出在哪,在去请教别人,不要有不懂的地方就直接去问别人,那样对你没太大的好处其实要学会给自己安排适合自己的学习计划,我大致来估计了一下,如果你每天能花4个小时安静的,用心去学习的话,30天之内你应该可以掌握C语言了其实在整个学习过程中你大多数时间都在看书,而不是面对电脑在调试你的代码之前,先在纸上把核心代码大致写出来,分析一下:程序的组成模块(可以是一个函数或多个),由几个函数来实现,接口的封装采用哪种数据结构更适合一些关键在于算法在你的最终程序发布之前,最好把你的代码行数减到最少不要只想着把代码写多过多的代码对程序来说是负担你可以在Internet上下载一个文件(C语言经典例题chm),里面大致包含了上百个经典的例题每一个例题都是C语言某部分的典型应用花时间把这个文件中的所有例题代码研究一下,最好能自己把代码改善,以自己的方式来求解以后你会发现你在写一些应用程序的时候经常会有一些算法会涉及到我之前提到的例题最后我认为你可以自己来写C语言标准函数,比如strcpy(); strlen();strcat();最好不要过分依赖库函数
C语言学习的难点:
现在应该是已经讲到一个重点的环节很多网友都说学习C语言很难,我认为C中有些部分是比较复杂,难理解的当然在你具有了丰富的开发经验以后,这以不在是问题了下面我个人会对我认为学习C的时候比较难学的地方进行我自己的阐述,如果哪里不正确,还请各位指出:
指针的出现:
我想有很多初学者学习到指针那一章都感觉很难,下面我就以自己的想法来解释下指针这个特殊的数据类型,
基本变量大家可能并不难理解,因为基本变量其内部存储了同类型的常量,事实上指针也是变量,不过呢,这个变量和基本变量有点不一样,那你又问了:是哪里不一样呢 我告诉你,简单的来理解其实普通的变量内部存储了同类型的常量,而指针变量内部存储的则是"同类型变量的首地址"这样你能够理解吗,是很简单的解释,但不失本质事实就是这样的如果你不理解"同类型变量的首地址"的话,我可以给你形象的来描述一下:
float Variable; //声明一个单精度实型的变量
此时,编译器已经给Variable分配了内存空间,结构如下:
__________
| |1001
|---------
| |1002
|---------
| |1003
|---------
| |1004
|---------
以上便是Variable的内存结构了,16位下的float占用4个字节,内存地址是线性编码的,我们可以很容易的看出Variable的首地址就是他第一个单元的地址1001,好的,继续向下看:
float Pointer=&Variable; //声明一个指向Variable的指针Pointer
_________
|1001 | 这是Pointer的内存结构
|_______|
我们的程序可以这样来执行:
Variable=10;
直接给Variable赋值,我们称为直接访问
也可以这样执行:
Pointer=10;
也可以通过指针变量来赋值,前面的是间接运算符号,意思是求Pointer内部存储地址所标识的内存单元也就是Variable此时,是赋值是通过间接访问来实现的可以这样形象的描述:
________ (指向Variable) __________
|Pointer|------------------------------------>|Variable|
--------- ----------
以上应该是指针实现的基本解释,很多优秀的程序写作者都说指针是C语言中的精华,的确如此,很多优秀的程序写作者写程序都非常依赖指针,因为它很方便,实际上指针所访问的对象是没有限制的,他可以指向任何类型的变量,前提是只要我们知道内存地址因此指针也并不安全,在开发网络程序的时候,尽量要少使用指针下面我们在来看一下指针在数组中的使用
数组中的指针:
简单的来解释下数组,数组结构在C中使用比较普遍,其实最常用的就是char 类型的数组,主要是用于字符串操作实际上数组是"同类型变量的有限集合"我想这应该不难理解吧数组在内存中占用连续的内存单元(地址连续),来存储数组中的每一个元素数组是预先分配好指定长度的内存单元,供数组元素使用它并不支持动态内存分配在内存中想要唯一的确定数组,需要2个标识:入口地址(函数名)和结束标记('\0')有些语言并不向C语言这样支持字符串结束标记,它们必须要另外声明一个变量来标识尾元素的下标那数组名其实就是这一组内存单元的首单元,他的地址就是整个数组的入口地址此时应该明白了,数组名是一个指针,这样理解没有问题不错在具体操作的时候不允改变数组名的地址,也不符合实际要求这样就可以明白数组名是一个什么 const Pointer(指针常量)我们可以这样做:
int Array[10];
int Pointer;
Pointer=Array;
for(i=0;i<10;++i)
Pointer==i;
以上代码应该是没问题吧,同类型的指针,完全可以胜任数组名的任务一点问题没有而且可以运行的很好当然,我们可以进一步把代码这样来写:
把
for(i=0;i<10;++i)
Pointer=i;
改成
for(i=0;i<10;++i,Pointer++)
Pointer=i;
不好意思,我记不清了,指针的++运算是地址+1还是向后移动一个元素的位置,如果是地址+1的话,以上代码在改成这样:
for(i=0;i<10;++i,Pointer+sizeof(int))
Pointer=i;
如果数组类型是char的话,那就更方便了,因为字符串存存在一个在尾元素之后的结束标记('\0'),下面给出一个简单的代码,应用char Pointer:
char my_strcpy(char dst, const char src)
{
char cp = dst;
while( cp++ = src++ ); // 注意运算符的优先级与结合性
return( dst ); //返回新传的指针
}
以上代码实现字符传Copy功能,代码是不是很简洁啊如果不需要移动内存块的话,我们完全可以通过交换指针(内存地址)来实现排序操作,其效率应该是很客观的补充一句:千万要弄清楚,指针本身与指针所指向的变量不是一个单元
如何提高C语言的编程能力:
学习C语言,谭浩强的《C程序设计》是一部非常好的C语言书籍,学习程序设计是一个非常漫长的过程,不要着急,一本书多看两遍三遍,学会交叉学习法,在学习C的过程中,可以看看数据结构,编译原理,操作系统等书籍,对编成都是很有帮助的。最开始学习的时候,先不要编一些比较大的程序,多编一些小程序,比如数组运算,字符组合等等,指针是C语言的精华,是比较复杂的部分。看到你的情况,编了一个学习系统,对语言的驾驭能力还是很不错的,我相信你,你一定能学习好C语言的。
C++的学习方法或建议
C++是C语言的扩展,学习的难度比较大一些,也是目前学习难度最大的一门语言,相对与C来讲,增加了一些新特性,继承,对象,模板,多态,STL(标准模板库),充分掌握这门语言需要四年的时间,
C++学习经典:
1把C++当成一门新的语言学习。
2看《Thinking In C++》,不要看《C++变成死相》;
3看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6会用Visual C++,并不说明你会C++;
7学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9看Visual C++的书,是学不了C++语言的;
10浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11浮躁的人容易问:我到底该学什么;——别问,学就对了;
12浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17C++不仅仅是支持面向对象的程序设计语言;
18学习编程最好的方法之一就是阅读源代码;
19在任何时刻都不要认为自己手中的书已经足够了;
20请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26请看《程序设计实践》,并严格的按照其要求去做;
27不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31学习编程的秘诀是:编程,编程,再编程;
32请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33记住:面向对象技术不只是C++专有的;
34请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35把在书中看到的有意义的例子扩充;
36请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39C++语言和C++的集成开发环境要同时学习和掌握;
40既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46记录下在和别人交流时发现的自己忽视或不理解的知识点;
47请不断地对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100XX;
48保存好你写过的所有的程序——那是你最好的积累之一;
49请不要做浮躁的人;
50请热爱C++!
----------------------------------------------------------------------
补充:
对c++学习的一点感想,希望对初学者能有些帮助
1如果你以前从来没有接触过c++,那么选择的第一本c++教程就显得尤为重要,我认为你可以参照以下的标准进行选择:
a对标准c++进行讲解,毕竟c++比从前发生了很大的变化。
b要求全面,但不要很深,这要有助于你对于c++有一个全面的认识,打好基础,并且易懂的教材还能加快学习的进度,让自己保持一种成就感。
c要有完整的范例来讲解每一个知识点如何运用,请注意这里所说的完整,并不是一个个代码片断。因为由于你以前从未接触过用c++进行编程,完整的代码可以使你有一个整体的概念,并且能够很快去进行大量的实践,因为变编程是从模仿开始,完整的代码恰恰告诉你了一个完整的步骤。不必自己去揣测。
d推荐:《c++ primer plus》
2当你有了一定的基础以后,就要选择一些书来迅速提高自己。这类书的特点是不仅仅教你如何去运用,而且要叫你如何去思考,并且你读起来也不是那么轻松。它意味深远,并不是你读一遍就能掌握的。
推荐:《thinking in c++》《effective c++》《more effective c++》 《c++ programming language》《c++ 沉思录》
3接下来就是对第二步所介绍的书籍进行反复的阅读,并且进行实践。由于这些书一位深远,每个人基于自己的基础都会有不同的收获,例如如果你的基础还没有达到某一高度,那么你就对一些精深的技术视而不见,不信?你可以试试,看看当自己有了一定提高之后再来读从前的一本书,你会发现许多新的东西。
---------------------------------------------------------------------------
我向你推荐一些C++经典书籍:
c++程序设计教程
c++编程思想
c++大学教程
c++程序设计语言
数据结构算法与应用c++语言描述
c++标准模板库------自修教程与参考手册
泛型编程与STL
深度探索c++对象模型
设计模式---可复用面向对象软件的基础
重构---改善既有代码的设计
Essential c++
Effective c++
More Effctive c++
C++ primer
前五本应该属于入门书籍,后面的属于学习难度比较大的,想提高C++的编程能力,看看这些书籍有好处。建议你把编程思想这本书多看看。多做练习题,对提高编程水平的帮助是很大的。
其实语言是相通的,一门语言学会了,学习其他语言就比较容易了。
业界有这样一种说法,因为JAVA这门语言包含了C++的一些特性,掌握了C++,就等于掌握了JAVA的80%,
我是一名大三的学生,我也正在学习C++这门语言,一年多的时间,学习的感觉真的很累的,希望能和你成为朋友!
我的QQ:261174630
最后祝你在学习编程的道路上走的更好更远,祝你学有所成!!
和其他语言相比(例如C++),C语言是一门比较“小”的语言,可以在较短的时间内入门,但是由于C的很强的表达能力和太多的细枝末节,要想精通比较困难。想精通有3种途径:1)阅读经典书籍,只读经典。2)多看优良的源代码。3)学习软件设计,并应用于日常编程。C语言比较经典的书也就那么几本,全部看下来也花不了很多时间。语言的优劣问题更像是一个信仰的问题,没有太多讨论的必要,而且大多编程原则适用于任何语言。在这里只讨论我视野所及的C语言书籍。
1 C语言程序设计
作者 : 谭浩强
出版社 : 清华大学出版社
评语 : 第0本 《C语言程序设计》谭浩强我们很少有学C语言的启蒙书不是用这本的。如果你从来没接触过C语言,这本书还是适合作为入门的。
2 C程序设计语言:第二版
作者 : 大学计算机教育丛书(影印版)
出版社 : 清华大学出版社
初学的话 从公来来人的角度 我强烈建议 看第一本书!!
应该说C语言的精华就在指针吧。指针是C语言的一大特点吧,也是它区别于其他高级语言的地方,C语言允许用户通过指针直接访问计算机内存。像C++,基本用引用了,JAVA根本没有指针的概念。但是直接操作计算机内存是件非常危险的事情。指针的错误使用可以直接导致编写的程序崩溃,内存溢出等问题。
现在C语言比较多的应用在嵌入式方面,其实在我看来没有必要一定要成为一个编程高手,只要能够成为一个好的程序员就可以了。一个好的程序并不一定是算法写的多么的天马行空,在时间和空间资源允许的条件下(CPU主频足够高,ROM/RAM有很富裕),算法其实并不是开发中最重要的事情。语言只是一种手段,一个外壳,最重要的是思想,如果具备了良好的软件结构/架构思想,使用什么语言都是无所谓的。
可能说的有点远了,总而言之,好的程序要有可读性,这就意味着你写的代码是可维护的;二是,要有健壮性,这在软件开发中是是非常重要的,你写的程序必须有容错的处理,否则后果不堪设想,举个简单的例子:你用一个int变量去除以另一个int变量,在除之前,你是否要判断一下除数是否为零呀?因为在算术里,除数是不可以为零的。如果不小心,除数是零了,呵呵,后果可就严重了,你的程序挂掉了!再者,你写的程序要有可移植性,因为你使用的可能是不同的开发平台。这就意味者你把代码从一个平台移植到另一个平台的工作量大大减小了。最后才是那些见鬼的算法呀之类的,相信我没有人会去用什么三级指针。
语言的东西熟能生巧,在实践中慢慢摸索嘛。
#include<stdioh>
void fun()
{
printf(“指针是C语言的建精华\n”);
}
int main()
{
fun ();
return 0;
}
指针确实难于理解。指针具有两个身份:
第一,指针本身是一个变量。只要是是变量,它就占用内存地址。当然如果没有分配内存地址,不在其内。
第二,指针包含一定的一个内容。指针所特殊的就是,他的内容保存的是其他变量的地址。
以上两点可以通过书中的示例7-7有比较好的体现。
例如,定义指针变量intp1。 intp1=&a 就表示 intp1保存的信息为a的地址。
而intp1表示是intp1所保存地址的内存单元所保存的值,实际就是a的值。
所以,你给出的 intp1=&a; 是一种不太合适写法。我们可以这样假设,再给一个变量b。令intp1=b=&a,则
b=&a,说明b保存的a的地址,这样b就是一个指针。那intp1=b,则说明 intp1所保存的地址指向的内存单元为b。所以,intp1可以看成a的指针的指针。
上面这个例子比较绕,慢慢想想,就理解了。
呵呵,哪有什么方法可以快速入门啊!
方法只有一个,那就是多学习,先拿本谭浩强的教材好好研究一下,有问题及时请教其他人,多思考、多动脑、多上机操作,上机操作时多按自己的思路尝试进行修改和扩充。有了问题及时解决,并做到举一反三。另外,有了一定基础后,再看一些其他相关书,每看一遍、每看一本都会有新的收获的!
语言的学习是需要一定时间来消化、吸收的,时间久了,慢慢接受了,也就入门了!
欢迎分享,转载请注明来源:品搜搜测评网