学习C语言要掌握的几个库

20:38 提问
C语言有哪些比较常用的库?比如画图的等等之类的库
利用C语言画一个函数的图形怎么来画,有哪些库函数要用到?C语言可以与数据库链接吗?
按赞数排序
各种数据库一般都提供了C API。
工程的用autocad 或 matlab,都有专门接口的
c语言直接画图非常麻烦,建议你去学vc(mfc)或者qt
是使用 Turbo C ,还是 MFC
如果是 Turbo C,则 Graphics 库比较难掌握;如果是 MFC,则简单了很多,加上网上的资料也多,所以建议你学习这个。
另外,在工作纯 Turbo C 的环境基本上已经没有人在使用。
C语言的Graphics.h ,高性能通用图形库OpenGL, 微软高性能2D图形库Direct2D/3D图形库Direct3D ,微软基本图形库GDI/GDI+。大概就这些了。
标准library,常用的函数如下 cassert (assert.h) cctype (ctype.h) cerrno (errno.h) cfloat (float.h) climits (limits.h) clocale (locale.h) cmath (math.h) csetjmp (setjmp.h) csignal (signal.h) cstdarg (stdarg.h) cstddef (stddef.h) cstdio (stdio.h) cstdlib (stdlib.h) cstring (string.h) ctime (time.h)
C语言常用函数速查手册 txt
单纯用C语言作图不好,请使用OPengl(C).
用OpenGL就可以了
基本的库函数就那么多,画图的话,依赖环境吧,也就是第三方工具了
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐学习C语言需要掌握哪些基本知识_百度知道
学习C语言需要掌握哪些基本知识
C语言好学吗?是不是只要学会C语言,就会一些简单的编程 能详细说说吗?不要用专业术语,那个好多我看不懂
我有更好的答案
学C语言主要要掌握它的语法规则,最好能把常用到的东西记住。和学数学一样,依照它的规则你就可以自己解题编题
采纳率:67%
c语言不需要什么基础,只能语言能考60分就行了,掌握基本函数的用法,按部就班就OK,什么乱七八糟的C语言数学编程那是用来考试的不是应用C语言,LZ不是为了考试吧,我主张为用而学
c语言一般吧,不如VB什么的好学是肯定的,学会c语言,可不仅仅会一些简单的编程,可以会很复杂的编程; 有很多应用程序是c开发的,包括一些游戏,一些服务器;总之,c很强大,需要长期的学
语言是一门计算机语言也就是平时所说的编程1~
你如果一点基础都没有的话学习编程我认为 c语言是一个很好的入门语言(很多人都说是vb简单,但个人认为虽然简单不适合入门语言学习,除非今后想往.net或basic方面发展)先不说这些!!~在学习c语言之前要掌握的时计算机基础啊
比如2 8 10 16进制的转换原码反码补码等鉴于你是初学不用掌握太多的东西需要的知识在以后会慢慢了解适自己的情况而定!~
至于你说看了看没看懂 不知道你看的是什么书 我推荐你一本 谭浩强的《c程序设计 (第二版)》很多人学习c语言都是看的这个(我也不例外呵呵)第一章是介绍c语言的历史和版本之类的东西了解一下就可以了!~从第二章好好看吧 不是很难应该能看懂!~
C语言几乎什么都能做,虽然有的领域C不是最适合的开发工具。网络、多媒体、数据库,... 都有很多C/C++的库。 而且C/C++几乎是最“直接”的高级(中级)语言,和其他高级语言相比,C对计算机的理解更深刻。在程序的执行效率非常重要的情况下,C/C++几乎是不二的选择。 就目前来看, C/C++的开发群体也应该是最大的。各个领域技术的最新发展上,几乎也都能看到C/C++的身影。 C/C++的效率几乎是没有可以出其右的,C/C++的适应性和生命力也是极强的。
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言习题解析 含基础知识讲解_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言习题解析 含基础知识讲解
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩183页未读,
定制HR最喜欢的简历
你可能喜欢学习嵌入式C语言要掌握到什么程度? - 知乎170被浏览<strong class="NumberBoard-itemValue" title="3分享邀请回答7212 条评论分享收藏感谢收起42 条评论分享收藏感谢收起C语言基础学习中必须扎实掌握的重要概念
我的图书馆
C语言基础学习中必须扎实掌握的重要概念
一、C语言的指针1.指针说明指针是包含另一变量的地址变量。(1)int *pp是一个指针,指向一个整形数。(2)int *p()p是一个函数,该函数返回一个指向整数的指针。(3)int (*p)()p是一个指针,该指针指向一个函数,这个函数返回一个整数。(4)int *p[]p是一个数组,该数组的每一个元素是指向整数的指针。想要一起学习C++的可以加群,群内有各种资料满足大家(5)int (*p)[]p是一个指针,该指针指向一个数组,这个数组的每一个元素是一个整数。(6)int *(*p)()p是一个指针,该指针指向一个函数,这个函数返回一个指向整数的指针。2.指针的初始化(赋地址)(1)通过符号&取变量(包括结构变量、数组第一个元素)的地址赋给指针;(2)把数组名赋给指针;(3)把函数名赋给指向函数的指针;(4)动态分配内存例:struct c{double r,i;};struct c *p;p=(struct c *)malloc(sizeof(struct c));3.指针与数组、函数的关系(1)对于一维数组 int a[i] 或指针 int *aa+i 指向 a[i](2)对于字符串 char s[i] 或指针 char *ss+i 指向第 i个字符 s[i](3)对于二维数组int a[i][j]*a+j 指向 a[0][j]*(a+i) 指向 a[i][0]*(a+i)+j 指向 a[i][j]例:对于 a[2][3]={1,2,3,4,5,6,}; 有 *(*(a+1)+1)=5;(4)对于字符串数组char p[i][j] 或字符型指针数组char *p[i]*p+j 指向第 0个字符串的第 j个字符*(p+i) 指向第 i个字符串的第 0个字符*(p+i)+j 指向第 i个字符串的第 j个字符例:对于 *p[]={'ABC','DEF'}; 有 *(*(p+1)+1)='E';例:对于 char p[][3]={'ABC','DEF'}; 有 *(*(p+1)+1)='E';(5)对于指针数组int *a[i]a[i] 指向 变量i即 *a[i]=变量i 或 a[i]=&变量i(6)对于结构struct XY{int *y}*p;p是指向结构XY的指针(*p).x 或 p->x 是表示 x 的内容(*p).y 或 p->y 是表示指针 y 的值(地址)*(*p).y 或 *p->y 是表示 y 所指的内容&(*p).x 或 &p->x 是表示 x 的地址(7)指向函数的指针对于 void func(char *str){…}; //定义了一个函数void (*p)(char*);//定义了一个函数指针p= //让指针指向函数则(*p)('…'); //用指针p可以调用函数func(8)指向多个不同函数的指针数组对于void function_1() {…};…想要一起学习C++的可以加群,群内有各种资料满足大家void function_4() {…}; //定义了四个函数typedef void(*menu_fcn)();//定义了指向函数的指针menu_fcn command[4]; //定义了指针数组command[0]=function_1;…command[3]=function_4; //让指针数组指向四个函数则command[0](); //用指针数组中的一个元素调用一个函数4.指针的分类(1)近指针(near):近指针为16位指针,它只含有地址的偏移量部分。近指针用于不超过64K 字节的单个数据段或代码段。在微、小和中编译模式下产生的数据指针是近指针(缺省状态);在微、小和中编译模式下产生的码指针(指向函数的指针)是近指针(缺省状态)。(2)远指针(far)远指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。每次使用远指针时都要重装段寄存器。远指针可寻址的目标不能超过64K ,因为远指针增减运算时,段地址不参与运算。在紧凑、大和巨模式下编译产生的数据指针是远指针(缺省状态)。(3)巨指针(huge)巨指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。远指针寻址的目标可以超过64K 。巨指针是规则化的指针。5.指针的转换(1)远指针转换成巨指针使用以下函数void normalize(void far * * p){*p=(void far *)(((long)*p&0xffff000f)+(((long)*p&0x0000fff00<<12));}6.指针的使用(1)将浮点数转换成二进制数float ff=16.5;unsigned char *(float*)cc=&//此时cc的内容为''//即cc第一个字节=0;第二个字节=0;第三个字节=0x84;第四个字节=0x41;(2)将二进制数转换成浮点数unsigned char *cc=(unsigned char*)malloc(4);cc=(unsigned char*)&*(cc+0)=0;*(cc+1)=0;*(cc+2)=0x84;*(cc+3)=0x41;//此时ff=16.5free(cc);二、C 语言的函数1.用户自定义函数格式类型 函数名(形式参数表)参数说明{……}2.函数的调用方式(1)传值方式①传给被调用函数的是整型、长整型、浮点型或双精度型变量。被调用的函数得定义相应的变量为形参。②传给被调用函数的是结构变量。被调用函数得定义结构变量为形参。③传给被调用函数的是结构变量的成员。被调用函数得定义与该成员同类的变量为形参。(2)传址方式①传给被调用函数的是变量的地址。被调用函数得定义指针变量为形参。②传给被调用函数的是数组的地址即数组名。被调用的函数得定义数组或指针变量为形参。③传给被调用函数的是函数的地址即函数名称。被调用函数得定义指向函数的指针变量为形参。④传给被调用函数的是结构的地址。被调用函数得定义结构指针为形参。3.函数调用(传值方式)结果的返回(1)返回的是数值要求被调用的函数类型与接收返回值的变量类型相同。(2)返回的是指针要求被调用的函数是指针函数,其指向的类型与接收的指针变量指向类型相同。(3)不返回任何值被调用的函数是void型。想要一起学习C++的可以加群,群内有各种资料满足大家三、C 语言的信息压缩法1.使用位运算符要把 5个数据的值压缩到一个字(16位)中,假定其中三个(f1、f2、f3)是标记(真或伪)各占一位;第四个是叫type的整数,其取值范围为 1到12,需要 4位的存储器;最后一个叫作index 的整数,其取值范围为从 0到 500,需占 9位。为此定义一个整型变量:unsigned int packed_data,可包含此 5个值。下图是位域分配。type    indexf1f2f3┌──┐┌───────┐┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘把 n的 4个低位的值置入packed_data 的type域中,用下面的语句:packed_data=(packed_data & ~(0xf<<9))|((n&0xf)<<9);其中位或符号|左边是将type域置 0,右边是取 n的低 4位后左移9 位到type域中。从packed_data 的type域中提取数值并把它赋予 n的语句是:n=(packed_data>>9) & 02.使用位域结构(1)定义一个叫做 packed_struct的结构,含有 5个成员struct packed_struct{unsigned int f1:1unsigned int f2:1;unsigned int f3:1;unsigned int type:4;unsigned int index:9;};(注:在结构中还可以放入普通数据类型,如等)(2)定义一个变量struct packed_struct packed_(3)把packed_data 的type 域置于n的低位,用语句packed_data.type=n;(4)从packed_data 中提取type域(按要求,把它移到低位),并把它赋予 n,用语句n=packed_data.3.使用联合(1)一个无符号整型数与一个结构(其中包含许多无符号变量)共用一存储区,当无符号整型数被赋值后,可通过结构变量获得各位的值。例如,定义一个联合union {struct {unsigned boot :1;unsigned copr :1;unsigned rsize:2;unsigned vmode:2;unsigned dnum :2;unsigned    :1;unsigned cnum :3;unsigned gnum :1;unsigned    :1;unsigned pnum :2;}}当调用BIOS INT 11H中断后,将AX的值赋给eq.equi,就可以从eq.beq.boot得到PC机有无系统盘的信息;从eq.beq.copr得到PC机有无浮点运算部件的信息。......(2)两个结构共享同一存储区域例如:union REGSstruct WORDREGS{unsigned int ax,bx,cx,dx,si,di,cflag,flags};struct BYTEREGS{unsigned char al,ah,bl,bh,cl,ch,dl,dh};union REGS {struct WORDREGSstruct BYTEREGS}四 、位运算1.数的编码—补码(1).正数的补码与原码同。(2).负数的补码为①第一位(符号位)为 1;②剩余原码位数逐位取反;③然后对整个数加 1。2.位逻辑运算的特殊用途(1).取一个数中的某些字节例 a & 0x00ff得到a的低字节,a & 0xff00得到a的高字节。┌─┬───┬────┬────────┐│数│十进制│十六进制│   补码   │├─┼───┼────┼────────┤│ a│   │0x2cac │1100││ │   │0x00ff │1111│├─┴───┼────┼────────┤│ 按位与  │ ox00ac │1100││ 运算结果 │    │        │└─────┴────┴────────┘(2).将一个数的某些特定位置1例 a | 0x0f使a的低4位改为1。┌─┬───┬────┬────────┐│数│   │十六进制│   补码   │├─┼───┼────┼────────┤│a │   │0x0030 │0000││ │   │0x000f │1111│├─┴───┼────┼────────┤│按位或  │    │1111││运算结果 │    │        │└─────┴────┴────────┘(3).将某数特定位置翻转例 a ^ 0x000f使a的低4位翻转(0变1;1变0)。┌─┬───┬────┬────────┐│数│   │十六进制│   补码   │├─┼───┼────┼────────┤│a │   │ 0x007a │1010││ │   │ 0x000f │1111│├─┴───┼────┼────────┤│ 按位异或 │    │0101││ 运算结果 │    │        │└─────┴────┴────────┘(4)将a的右起第2位反向变化(1变0,0变1)a=a^0x02;//(0x02=),异或的意义是'同值为0'(5).将两个数(整型数)的值互换例 a=a^b;b=b^a;a=a^b; //三步使得a、b的值互换3.移位运算的特殊用途(1).将某数除以2(右移1位)例 a>>2 使得a被4除①对于 signed a=-8,a>>2a=-8┌─┬─┬─┬─┬─┬─┬─┬─┐│1 │1 │1 │1 │1 │0 │0 │0 │└─┴─┴─┴─┴─┴─┴─┴─┘├─┬─┐ ──>  └───┐┌─┬─┬─┬─┬─┬─┬─┬─┐│1 │1 │1 │1 │1 │1 │1 │0 │└─┴─┴─┴─┴─┴─┴─┴─┘a=-2②对于unsigned a=248,a>>2a=248┌─┬─┬─┬─┬─┬─┬─┬─┐│1 │1 │1 │1 │1 │0 │0 │0 │└─┴─┴─┴─┴─┴─┴─┴─┘└───┐ ──> └───┐┌─┬─┬─┬─┬─┬─┬─┬─┐│0 │0 │1 │1 │1 │1 │1 │0 │└─┴─┴─┴─┴─┴─┴─┴─┘补0──┴─┘    a=62(2).将某数乘以2(左移1位)注 左移时signed 与unsigned变量的情况一样,均要补0。(3)将x的右起第n(n>=0)位置0x&=~(1《n); 若x是long,则x&=~((long)1《n);(4)将x的右起第n(n>=0)位置1x|=1《n;若x是长整形数则 x|=(long)1《n;五、C语言访问CPU寄存器的方法1.使用联合REGS,和函数 int86() / int86x() / intr()REGS是用来在进行 DOS软中断调用时向各个寄存器传输数据或从各个寄存器取出返回值。union REGS 示意图struct     structWORDREGS    BYTEREGS┌  ┌───────┬──────┐──┬──  ┐│  │       │   al   │ 1 byte   ││  │   ax   ├──────┤──┴─ 2 bytes│  │       │   ah   │       ││  ├───────┼──────┤─────  ┘│  │       │   bl   ││  │   bx   ├──────┤│  │       │   bh   ││  ├───────┼──────┤│  │       │   cl   ││  │   cx   ├──────┤│  │       │   ch   ││  ├───────┼──────┤│  │       │   dl   ││  │   dx   ├──────┤│  │       │   dh   │union regs├───────┼──────┤│  │       │      ││  │   si   │      ││  │       │      ││  ├───────┤      ││  │       │      ││  │   di   │      ││  │       │      ││  ├───────┤      ││  │       │      ││  │  cflag   │      ││  │       │      ││  ├───────┤      ││  │       │      ││  │  flags   │      ││  │       │      │└  └───────┴──────┘│   x 两个结构变量 h  │└──  共享同一存储域 ──┘2.使用伪变量和函数geninterrupt()Turbo C 允许使用伪变量直接访问相应的8086寄存器。伪变量的类型有两种。① unsigned int : _AX、 _BX、 _CX、 _DX、 _CS、 _DS、 _SS、 _ES、 _SP、 _BP、 _DI、 _SI② unsigned char: _AL、 _AH、 _BL、 _BH、 _CL、 _CH、 _DL、 _DH六、C语言使用内存和寄存器的方法1.段和段寄存器CS用来存放代码段的段地址;DS用来存放全局变量和静态变量所在段(数据段)的段地址;SS用来存放局部变量,参数所在段(堆栈)的段地址。 此外,还有堆段,是动态分配的内存。2.微模式编译时段的使用情况只有一个段,从底往高依此装入代码,静态变量和全局变量,堆。从高往低装入堆栈。3.小模式编译时段的使用情况数据、堆栈和近堆共用一个段,代码用一个段,还有一个远堆(用far指针存取)。4.中模式编译时段的使用情况中模式有多个代码段,其余与小模式一样。函数指针用far指针。5.紧凑模式编译时段的使用情况代码,静态数据,堆栈,堆(只有远堆)各有自己的段。静态数据的总量不得超过64K。6.大模式编译时段的使用情况静态数据,堆,堆栈的分配与紧凑模式一样;代码段的分配与中模式一样。数据指针和函数指针都是远指针。静态数据的总量不得超过64K。7.巨模式编译时段的使用情况来自不同源文件的代码放在不同的段内,来自不同源文件的静态数据也放在不同的段内,只有堆栈是合在一起的。8.运行库函数分配的内存:常规内存区远堆(数据段之外) 用_fmalloc()分配,得到32位指针├─────────┤64│堆(未使用的内存)│用malloc()分配,得到16位的位移地址KB├─────────┤数│ 栈(局部变量) │据├─────────┤段│ 全局和静态变量 │├─────────┤七、用C语言写中断服务程序(如果中断服务程序不牵涉到中断链以及 DOS和其本身的重入问题。) ---Turbo C1.函数类型为interrupt 的中断服务程序定义如下:#includevoid interrupt 函数名(bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flags);unsigned int bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,2.得先保留原中断函数地址void interrupt (*保留函数名)( );保留函数名=getvect(0x中断号);3.在main函数中用自定义的中断服务程序替换原来的程序setvect(0x中断号,函数名);4.在main函数中激活自定义的中断服务程序(1)先设置要用到的寄存器的值(用伪变量),(2)geninterrupt(0x中断号);若替换的是计时中断程序,因PC机内的计时器每秒产生18.2次中断,则每秒自动执行18.2次新的中断程序。5.事后得将原中断函数地址装回向量表中setvect(0x中断号,保留函数名);1、 C语言已死吗?本资料描述的是使用C语言的高级技巧,力求将你的C语言能力由“基础”提升为“高级”。但是学习态度胜过学习方法,在正式学习之前,有一个问题不吐不快,那就是“C语言还值得学习吗?”想要一起学习C++的可以加群,群内有各种资料满足大家正方观点——C语言已死正方论据:C语言的三宗罪:1、代码底层,缺乏共享。与Java多如牛毛的库函数、三方控件和框架相比,C语言的库函数简直就是少的可怜。如果说Java是个富得流油的大财主,那么C语言只是一个家徒四壁的小佃户。选择C语言,开发者必须独立设计所有的细节,小到栈与队列,大到串口与通信,必须从底层开始设计全部的代码。比如字符串分解,在Java中仅仅调用类的一个方法就可以完成,但在C语言中却无从调用。又比如说数据结构,Java中所有基本数据结构都提供了现成的类,但在C语言中,开发者必须自己设计诸如队列与树之类的内容。再比如说网络通信,Java中重载一个类既可以获取用户在网页中提交的内容,但在C语言中,这简直就是不可以想象的事情。有人说,Java只需2万行完成的代码,在C语言中需要7万行,这无不道理。2、指针犀利,访问灵活。C语言特别灵活,可以访问绝大多数的系统资源,尤其是C语言的指针,简直就是一把锋利的倚天宝剑。当程序正确时,C语言能够加速运行,减少代码。但是,谁能保证程序没有bug呢?倘若代码中出现了错误,哪怕是一丁丁的错误,也能如蝴蝶效应般产生不可估量的后果,所谓“一个语句可以造成程序全面崩溃”就是这个道理。3、应用狭窄,界面简陋。几个IT人讨论技术,十有八九发现他们使用的都是Java。几个学生展示课程设计,Java同学总是展示某某管理系统,引起同学们的阵阵惊呼;而C语言同学总是展示一个黑洞洞的窗口,只带来一些友情似的稀稀落落的掌声。仿佛C语言在编程队列中被边缘化,似乎C语言项目正在一步一步的走向末路,好像C语言程序员正逐渐消失。正方结论:C语言属于英雄,他注定是英雄的长剑而不是平民的武器,所以,一般的大学生无须选择和学习C语言。其实并非如此,正如流言在真相面前不攻自破一般,打消大家怀疑C语言的念头,其实很简单,两个数据就可以使这种怀疑消失的无影无踪:其一、《编程语言排行榜》翻开排行版,无论哪个月份,前三强必定是Java、C和C++,C语言的比重绝对超过15%,Java也只是在20%左右,所以学习C语言,绝非无用武之地。其二、招聘网站进来各大招聘网站,搜索C语言及其相关岗位,绝对可以得到大量的信息,这也从正面证实了学习C语言,前途是光明的。由此看来,C语言不但未死,相反还活的有滋有味。既然学习C语言前景广阔,那么为什么很多学生迷茫,很多学生谈C色变呢?这是因为,学习C语言,前途是光明的,道路——其实并不曲折,但却是掩盖的,明明路就在前面,但是同学们就是发现不了,只好在黑夜中挣扎,把大部分学习的精力浪费在无休止的挣扎之中,久而久之,增加了C语言的恐怖气氛,自然而然地缺乏了学习C语言的兴趣。2 、这样学习C语言最有效学好C语言的秘诀就是1234:“一字真言,两种态度,三个框架,四项注意”。一、一字真言各位看官,学好C语言,其实只需一个字,那就是“编”。(一)编。学习C语言,乃至学习所有的语言,都讲究一个动手——不是动手打人,而是动手编程序。你必须通过编写程序来熟悉知识、理解知识。倘若只学不编,只看别人的程序,自己不动手写,是不能从入门到精通的。要知道,在计算机界,只说不练的人很欠揍。试想一下,你在哪里辛辛苦苦的编程序,他却站在一边,如老板一样喋喋不休,对你提出这项意见,那项思路,甚至畅谈自己编程将会如何如何,好像很牛皮的样子,但就是不编一行代码。估计大家碰上如此之人,只会一个动作,那就是点击“踩”。一个“编”字就可以学好C语言吗?真的如此简单吗?不是的,仅仅“编”是不够的,你还需要“我编”。(二)我编。请注意修辞,“我”编!这个“我”其实就是只“你”,也就是学习C语言的人。大家在学习C语言时,要多编写程序,比如学习链表时,要自己编写链表程序,甚至自己编写俄罗斯方块等游戏程序来练习。不过有个前提条件,你必须自己编写这些所有的程序才有效果,如果你从网络上下载了某某源代码,或者拷贝了同学的程序,任何大言不惭的说是自己编写的,那么我也只能大言不惭的告诉你,这样做出了养成偷窃的习惯外,没有任何效果!有同学会问,那么“亲自”编程序总可以精通C语言了吧,其实还差一点点,仅仅“编”是不够的,只是“我编”还不足以精通,为了达到C语言的最高峰,你还需要“我编编编”。(三)我编编编。“编”字重复三次,这里的“三”,代表多,意思是你必须多多的编写程序。亲自编写10行代码等于没有编,亲自编写1000行代码是远远不够的,亲自编写1万行代码还马马虎虎,亲自编写10万行代码,你绝对成为程序员中的战斗员。乍一看10万行代码,估计有同学会先直挺挺的躺下去,然后又眼珠一转站了起来——他们想起了坏主意。“不就是10万行吗,容易!现在的编程工具都有代码生成功能,随便在VC中用鼠标拖曳几下,搞一个MFC窗口程序,系统就自动生成了几百行的代码。在搞几个三方控件,几千行代码就生成了!”想要一起学习C++的可以加群,群内有各种资料满足大家再次声明,“编编编”是有前缀的,那就是“我”,也就是学习者自己,使用代码自动生成工具产生的代码难道是“学习者”编写的?要不上有政策,下有对策,“不用代码生成器,那么就抄,照着输入代码就行!”哎,人不能无耻到那种地步!这十万行代码要“你”亲自完成,亲自在脑海中发芽、生根,再亲自逐行输入。这又不是什么政绩任务,也不是什么形象工程,欺骗别人最终只能是自欺欺人。二、两种态度一般人提起C语言,常常一个字如影随形涌上心头,那就是“难”!害怕啊,C语言真是太恐怖了,传说中的指针真是太锋利了,一不留神就把系统划破,搞出几个死机重启都是太正常不过了。其实没有必要这么担心,本朝太祖曾经说过:“在战略上藐视敌人,在战术上重视敌人。”(一)战略上藐视C语言其实,C语言也就是一个普通的语言而已,别把它想象的太难!与Java相比,C语言也只是程序复杂一点、代码冗长一点、库函数少上一点、三方控件难学一点,编译工具简陋一点、指针麻烦一点,其他的都差不了多少,程序设计思想总是一样、程序构建总是相同的、程序语法总是类似的、程序逻辑总是差不多的。想要一起学习C++的可以加群,群内有各种资料满足大家没有必要对C语言谈虎色变,把他当成一门普通的语言就行了。要知道,就算C语言再难,总比汇编语言容易掌握、比机器语言容易记忆、比英语容易掌握。所以要自信!一切C语言都是纸老虎。(二)战术上重视C语言虽然我们在C语言面前保持了激昂的斗志,虽然我们无所畏惧。但是真正在学习得过程中,还是务必保持谦虚谨慎的态度,戒骄戒躁,不要因为搞了一两个俄罗斯方块游戏程序就洋洋自得,以为老子天下第一,甚至只遍了10行代码,就到博客中到处骂人,到处“踩”人的帖子。要知道,“雄关漫道真如铁,而今迈步从头越”,无论你学了多少,只要还没有走上工作岗位,那么万里长征就只是才迈出了第一步,还有很长的道路等待着你。三、三个框架学习C语言,“编”不是问题,问题是“编什么”、“怎么编”、“编多深”,下面就来解决这些问题。(一)静心不静1、静心。学习的过程,是一个漫长而枯燥的过程,学习者必须要有吃苦耐劳的准备,静下心来,从大家的视觉中消失,经受一个长时间的编程学生过程。吃尽苦中苦,方成人上人!等你重新回到大家的视野时,你会有一个蜕变,那时一切的痛苦都将化为甘甜。温瑞安先生有一部武侠小说,叫做《请借夫人一用》,我们这里也借用一下。当然不是借用别人的女朋友,而是了解一下主人翁的学习历程。主人翁韦青青青出场时浑然是一个高手,他把一千零一招的功夫柔和在一招之中,但是在其出场之前,江湖上没有人知道韦青青青这一号人物,因为他正在十年如一日的专心练功,正是这种练功时的不为人知,才造就了了日后的温瑞安小说高手。不谈武侠,来个IT版的例子。在遥远的大洋彼岸,在微软的IE横行之前,在互联网刚刚起步之时,有一个叫做“网景”的浏览器占据了市场99%的份额,网景公司在当时的美国更是比易中天还如日中天。可是,大家知道这个“网景”浏览器是谁开发的吗?是一个学生,他在大学中不显山不漏水,别的同学每天考虑着泡MM,他却每天除了上课就是泡机房,是上也泡,下也泡,终于泡出了浏览器。所以说,静下心来,无论其他同学在多么兴奋的展示他们的某某系统,他们的某某网站,既然你选择了学习C语言,那么以韦青青青为榜样吧,总有一天,你会一举成名天下知的。2、不静学习C语言,务必不可以急躁,务必一步一个脚印,此乃静心。但是,学习C语言,也不可以太过沉默,一个人呆在机房里闭门造车妄想着创造出某个绝世程序然后成为中国的比尔盖茨是不可能的。学习靠自己,所以大部分时候我们需要自己思考、闭关修炼。但是一个人的力量终究是有限的,很多时候我们需要借助外力。比如不懂的地方咨询老师,不明白的地方可以与同学相互讨论等等,都是可以的。有很多同学,学习时碰上困难,遇上了麻烦,于是自己冥思苦想——这是对的——还是得不到结果,于是故意回避不闻不问——这是自欺欺人。有同学说,那是因为无人可问,问老师,貌似大学老师总是神龙见头不见尾,根本找不到;问网络大虾,网络大虾们经常不在线,就算在线,面对洋洋洒洒的留言也视而不见,更别提回复了;问同学,别提了太丢面子!大家同学而已,为什么要问他,问他岂不是说明自己低人一等吗,不问!其实,大学之中同学之间相互讨论是最可行的一种做法,毕竟一个王重阳没有时间指点全真七子,网络大虾比投名状中的兄弟还不可靠,所以除了自己多思考就是同学之间多讨论了。不要担心问问题会低人一等,老祖宗有一句话叫做“不耻下问”,虽然你的水平比我低上一点点,但是,我不觉得向不如自己的问提问是耻辱。多好的阿Q精神啊,用这点!只有静心,才可以更好的学到知识;只有不静心,才可以更快的学到知识。(二)深入不深1、深入学好C语言,就一定不能浮躁,要深入的学习知识。其实,以上的话就极其浮躁,极其不深入。谁不知道要深入学习啊,但是你的告诉大家,到底什么内容属于深入学习的内容。想要一起学习C++的可以加群,群内有各种资料满足大家其实,浮躁就是学习知识就是浮于表面,没有深入理解专业知识。表现在编程上就是只想编写一些所谓漂亮的、能够拿得出手的程序,而对于一些底层的支持程序置之不理。有的同学喜欢编写一些漂亮的程序,比如设计漂亮的网页,使用某某工具开发某某‘大型’系统等等,当然这都是人之常情。正如鲁迅先生所说,文章写出来总是希望拥有更多的读者,除非是写给恋人的。程序编出来,总是希望拥有更多用户,除非是专门为爱人开发的。但问题是,只编写这类程序是不够的,是有缺陷的。这些所谓的程序,往往只需要对知识应用,并不需要刨根究底研究知识的本身,甚至有很多加入了很多相当专业的内容,并不适合于初学者学习。比如VC中的MFC就是一个典型的误导初学者的工具。利用MFC可以很方便的编写出DIAG界面程序或者视图文档程序,从表面上看风光无限,但对初学者却祸害无穷!假如使用VC学习C++,大部分时间将用于消息的处理,控件的处理,还要阅读大量的视图文档结构类库说明,这些操作将耗费了你大量的时间,得不偿失。而且VC++的大部分编程是在某些位置插入代码,至于C++部分系统自动实现了,留给你的是纯C语言操作。同学请注意,你学习的是C++,不是VC类库,也不是VC操作!比如使用数据结构,就必须自己编写有关链表、队列和栈等内容,你是在学习,又不是工作,当然得用自己编写的东西呢。又比如说C语言的内存分配函数,就是那个malloc和free。一般人直接调用就行了,但是计算机专业的学生不应该止步于此,而应该思考这两个函数的系统实现方法,并且编程序模拟内存分配和释放。设计这样的程序,不但可以增强动手能力,还可以加深对计算机知识的理解,一举多得,何乐而不为。2、不深深入学习C语言是极其应该的,但是大家也必须有所侧重,不能胡子眉毛一把抓,所有的东西统统深入,具体表现在两个方面:其一、一些知识范围不可过于深入。有一些知识,属于偏僻的内容,既不是基础,日后工作中也很难碰上,而且还极度困难,像这样的东西,了解即可,完全没有必要深入。比如说某同学心血来潮,要编写一个漂亮的输入法软件,于是苦心学习了有关输入法的所有知识,还妄图气死清华紫光,饿死搜狗拼音,于是仔细研究输入法的犄角旮旯。其实这些知识均相当偏僻,了解即可,完全没有必要打破沙锅问到底。其二、一些界面或者不必要的功能不可过于深入。大家编写的程序,往往伴随大量的交互式界面设计。事实上,编程有个二八原则,即编写80%的核心内容将耗费你20%的时间,而另外20%的功能将耗费你80%的时间。实际上,作为C语言学习,深入编写好那80%的核心功能就可以了,耗费80%的时间去深入完善那些20%的功能,得不偿失!所以,练习用的程序,最好是一些基础的、底层的实现,不要有太多花俏的图像和交互式操作。当然也可以设计一些简单的具备图形界面的小游戏,但此时你应该将精力更多注重于游戏本身的设计,而不是游戏的画面风格和动画效果上。学习C语言,有所为有所不为。(三)枯燥不枯1、枯燥学海无涯苦作舟,学习当然是一个枯燥的过程。用语言设计程序,表面上程序漂漂亮亮风光无限,其实风光的背后是黑漆漆的屏幕和冗长的代码。程序员是把美丽献给别人,把枯燥留给自己的职业。想要一起学习C++的可以加群,群内有各种资料满足大家所以,学习C语言,就必须多设计一些枯燥的、无趣的实例。当flash程序员在展示图片时,C语言程序员要去学习空洞的0和1的图片格式;当Java程序员设计网站时,C程序员要去理解抽象的HTTP协议;当.net程序员使用对象托管时,C程序员总是要考虑内存的申请与释放;当C++程序员在欢乐的使用STL库时,C程序员必须自己搭建所有的数据结构。在C语言的学习路上,绝对没有学习其他语言那么多鲜花,这是每一个C语言爱好者必须接受的事实。2、不枯其实,人都是需要动力的,凭什么别的程序员可以通过漂亮的程序享受MM的崇敬和同学的赞叹,而C语言程序员就只能在0和1的世界中与电脑沟通。其实,学习C语言的过程完全可以是快乐的。大家在基础内容了解的差不多时,完全可以循序渐进设计一些简单的趣味游戏程序,从贪吃蛇到俄罗斯方块,从搞怪碰碰球到连连看,从扫雷到雷电,甚至还可以是植物大战僵尸和愤怒的小鸟,编写一些在界面上简化的趣味游戏程序来,同意可以激起自己的兴趣并获取老师、同学尤其是MM的阵阵掌声。枯燥,是因为学习并非玩耍。不枯,是因为要像玩耍一样的学习。四、四项注意(一)错误观点:C语言低人一等由于C语言常常应用于一些服务器程序,没有漂亮的界面,在一些同学的心目中,C语言程序员就成了IT民工的代名词。类似于煤矿工人,整天生活在地底下。而那些Java程序员,.net程序员则成了白领丽人。(二)错误观点:C语言高人一等与第一种情况相反,一部分同学则认为C语言才是语言正统。俗话说:真正的程序员用C,聪明的程序员用delphi。那么其他的语言统统是神马牌浮云,不值一提。其他的程序员,无论聪明也好,愚蠢也罢,都是盗版水货。(三)错误观点:C语言是忠贞情人。弱水三千,只取一瓢。有人在爱情上的忠贞,有人去在语言上忠贞,有人如斯内普般一生只爱一个女人,有人欲效仿之,一生只使用一种语言。正如人生而平等一样,其实,语言也没有高低贵贱之分,只有适合于不适合之分。Java适合做WEB开发,C语言适合服务器,C++适合做游戏,等等。真正的程序员,不是只使用C语言的人,而是到什么山唱什么歌。任何语言、任何数据库、任何操作系统对他来说都只是工具,呼之能来、来之能战、战之能胜、挥之能去。当JQuery方便时,我不直接用JavaScript;当速度优先时,我不用Java;当稳定优先时,我不用Windows。总之,倚天剑也好,屠龙刀也罢,统统是工具,为我所用,为我所奴役。(四)光说不练假把式学习C语言的真言是“编”,但是也有同学会反驳,“这么简单的程序,也需要我亲自编写吗?”、“这个程序我看一眼就知道怎么做了”、“跳过这个程序,直接编写后面的程序”、“不要把天才浪费在这种小程序上”等等之类的言论不绝于耳。上面其实就是典型的“眼高手低”。大家在高中学习数学时常常有这样的体会:一看就会,一做就错。计算机编程其实也是一样,咋一看简简单单,谁都可以说出个丁三卯四来,但是真正上一实战,手也抖了,腰也弯了,脑袋也浆糊了。要么半天写不出一行代码,要么编译就是报错,怎么查也查不出原因之所在。所以,这里奉劝各位“高手”,实践出高手。是骡子是马,拉出来溜溜。请那些所谓的“高手”先试着做一两个作业,真正得心应手一气呵成才才是真正的高手,否则,老老实实的地毯式编程吧。3、C语言初学者必读的十句话一、一定要养成一个规范标准的代码排版格式,好的排版会让帮助你的人事半功倍。二、一定要培养自己查找错误的能力,要记住别人只帮你一时。三、一定要养成写注释的习惯,特别是你的代码要给别人看时。四、遇到问题,一定不要立刻问别人,其实很多问题都是自己不小心所致,回头看看书你可能会明白原来这也很简单。五、多看看头文件中的内容,它能告诉你标准地调用库函数的方法。六、书上的程序其实都是比较经典的,何不在上机运行一下这些程序,看看你对程序的理解力是怎么样的。七、优秀的程序员不只对书本上的知识了解很透澈,而且对更深层次的知识有着强烈地吸引力。八、一定要跟上世界的脚步,闭门造车会导致你失败的很重要的原因。九、一定要认定一个方向,不要什么语言都想学,没必要,你也没有这个精力。十、一定要培养好自己的阅读代码的能力,必竟现在软件项目不是一个人能完成的。想要一起学习C++的可以加群,群内有各种资料满足大家
TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

 

随机推荐