2024年10月c语言新手教程((1小时学会C语言51单片机)C语言入门教程)

 更新时间:2024-10-12

  ⑴c语言新手教程((小时学会C语言单片机)C语言入门教程

  ⑵小时学会C语言单片机)C语言入门教程

  ⑶作为学习入门,确实是最最基础的了,不过至少它可以让一个新手明白控制是怎么回事,反馈是怎么回事,程序是怎么下载进去运行,又是怎么控制到io输入输出的,如何去访问寄存器,掌握一套在嵌入式领悟最最基本的开发方法和学习思路。这部分如果有兴趣,建议学习时间不要超过两个月。.c语言,及部分汇编代码.用一个月时间看完做完郭天祥的十天学会单片机.买一块开发板.学习能够看懂看会原理图.掌握搜集资料,datasheet查找阅读英文手册的能力.自己动手动手动手做一个简单的功能最后,我其实不建议入门,可以直接stm,虽然他还是单片机。不过十年前我当初也是入门的,乐此不疲。至于忽悠你什么协议,内核,我觉得让一个大一嵌入式新手学这些,无疑没有基础就想建高楼,所以踏踏实实从基础开始,大学就是注重基础,学习能力!

  ⑷没有基础可以入门,通过努力可以达到初、中级程序员的程度,但再往上走,就比较困难了。后面需要不少算法、英文和数学知识。教程的话可以参考下面两本教程:谭浩强:《C语言程序设计》李铭城黄中豪陈宇芬:《资料结构C》英文的话,进入初级之前都不怎么需要。但是进入中级后,需要读一些英文资料。不过现在翻译比较厉害,绝大部分的资料都有翻译。但是要进入高级,就必须要学习英文了,因为最新最核心的资料都是英文的,翻译的往往都会有错误。另外数学在早期影响不大,但是进入中级后就必须要了。因为估算算法时间复杂度、空间复杂度、图、树等等,都涉及不少数学知识。当然如果只是做简单应用或者驱动的话,这方面要求就不会太高。最后给一个学习大概的路线图:入门级的学习,只要能够掌握:代码三大结构(循环、分支、顺序、流程图、C语言关键字和语法、输入输出、文件操作、套接字操作。就算是初级满级了。初级程序员:数据结构和算法(排序,查找、了解软件开发模型(瀑布模型、敏捷模型、原型模型等等、了解UML、系统常用API、网络通信、编译和SDK环境搭建中级程序员:设计模式、多线程编程、网络通信(服务器、客户端、面向对象编程、掌握UML、系统网络/文件/互斥/线程/事件/安全API、STL、相关法律法规、知道一些常用软件架构(MVC等

  ⑸在开始学习C语言基础时,要反问自己为什么学C语言,如何学好C语言。同时要知道什么是C语言以及C语言的发展。

  ⑹当对这些知识有了一个概念之后,就正式开始学习C语言了,其中,可能会学到数据类型、运算符、表达式、数组、/函等,这些是为了对C语言的基础有一个基础认知,扩展,整合;还会学到指针、联合体、结构体、枚举、位运算、预处理、文件等知识点,学这些是为了全面掌握面向过程设计、实练逻辑算法,拓展思维模式等过程。

  ⑺学完了这些,还可能会讲到VS、VC++、C++、C和TC—认识开发环境和语言的区别。

  ⑻这里只给大家介绍一个大概,如果有兴趣的话,可以和我私聊哦

  ⑼第二阶段:上机实战训练

  ⑽学完了这些理论知识后,就得将学到的知识点全部运用到实践中去。这样才能更好学习入门。分享不错裙的有软件视频资料分享

  ⑾C++语言熟练,熟悉C++语法,包括面向对象的概念,模版等

  ⑿这一阶段需要比较艰辛的过程,需要学习很多书,包括《C++ProgrammingLanguage》,《EffectiveC++》,《MoreEffectiveC++》,《ThinkinginC++》,《C++对象模型》,《C++模版》,如果上述书籍已经很熟悉了,本人认为,在学习阶段,已经很不错了。该过程可以在大学完成,需要一到两年的时间,应为是纯理论的东西,只能算熟悉。在该过程中,需要做一些简单的程序。

  ⒀C++做项目,使用C++做项目,需要比较多的其它库,比如UI库,还需要使用一些网络库等,这个时候,就可以看到C++的博大精深了,此时,光有C++语言知识是不够的,需要补充一些平台开发的知识,看看开源的C++项目。比如:Windows程序设计,C++网络编程,DirectX游戏开发,如果用C++做了两个以上的项目,那以及很不错了。

  ⒁最高境界是精通,自然是量的积累才会有质地变化。

  ⒂首先学习C语言你就要有一个好的心态,要有坚持的心态,不能学一段时间,觉得难就不学了,这是最忌讳的,学习C语言坚持是最重要的。

  ⒃接下来就是掌握有效的学习方法C语言是一门公认的不易入门的语言,因为涉及的内容比较多(特别是语法繁多)。如果你想学习C/C语言,你可以咨询页面客服哦,还会直接给你资料的。下面我们进入正题:看看学习C语言要经过几个方面,几个阶段:

  ⒄首先阅读和理解现有的程序,一般是教材资料的程序,每个程序都必须亲手打一遍。在输入代码的同时,一定要了解每一个语句的意义和运算符号的意义。

  ⒅完成了第一阶段的学习后(一般-节课),开始根据给定的源代码进行简单的修改,这个阶段可以实现一点点自己的想法,同时也能将相关的语法掌握的更加熟练。

  ⒆模仿阶段:当我们可以进行简单修改代码后,可以尝试模仿现有程序的代码,编写自己的代码,比如,我们学会了求解梯形面积的程序后,我们可以编写求解三角形的面积。此时的模仿,不仅仅是模仿代码结构,还需要模仿问题的分析方法,有数学问题,也有实际生活问题,这也是初步培养逻辑思维和计算思维的过程。

  ⒇独立阅读代码阶段:在编写程序之前,阅读现有的程序,可以提高程序的理解能力,学会其他人编写程序的思想,也可以是同学的程序,找出同学程序的错误或不同写法,都是很好的学习编程的方式。

  ⒈独立分析问题阶段:这个阶段和第阶段同时进行,独立分析问题就是将现实的问题运用计算思维去解决,即通过问题分解、模块划分、算法设计和代码编写,最后调试程序。在学习C语言时,在这里需要注意一些问题,那就是要记住从程序逻辑分析问题,多多进行调试,自己解决问题。

  ⒉谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。、多看代码在有一定基础以后一定要多看别人的代码。注意代码中的算法和数据结构。毕竟学C之后的关口就是算法和数据结构。提到数据结构,指针是其中重要的一环,绝大多数的数据结构是建立在指针之上的,如链表、队列、树、图等等,所以只有学好指针才能真正学好C。别的方面也要关注一下,诸如变量的命名、库函数的用法等等。有些库函数是经常用到的。对于这些函数的用法就要牢牢记住。、要自己动手编程序是个实干的活,光说不练不行。刚开始学的时候可以多练习书上的习题。对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能给自己留下深刻的印象。自己动手的过程中要不断纠正自己不好的编程习惯和认识错误。有一定的基础以后可以尝试编一点小游戏,文曲星之类的电子词典上小游戏很多,照着编作为练习。基础很扎实的时候,可以编一些关于数据结构方面的东西,诸如最经典的学生管理系统。之后.....学汇编、硬件知识。、选择一个好的编译器VS以上版本、关于养成良好的编程习惯基本上每本C教材上都要提到。作为新手这条一定要时时遵守。具体方面:(在比较复杂的代码后面要有注释。如果光溜溜一堆代码,别人就不可能看懂你的代码,而且也不利于查找错误。(注意语句的嵌套不能过长,一般来说,一段代码里Tab要少于个。简单说就是语句最多个嵌套。对于新手来说,这个标准还要下降。有一个好习惯是,把主函数尽量写简短。经常看到别人的代码是主函数只有几行,几个函数调用,而定义全在主函数外部。这样一是减少了主函数内部的嵌套,二是比较精简,容易读懂。(注意语句的选择。并不是分支语句就用if循环就用while、for。在适当的情况下switch和dowhile语句也是要用的。

  ⒊C语言基础知识.C语言简介C语言于年由美国的DennisRitchie发明,并首次在配备了UNIX操作系统的DECPDP-计算机上实现。它由早期的编程语言BCPL(BasiombindProgrammingLanguage发展演变而来。年,AT&T贝尔实验室的KenThompson根据BCPL语言设计出了较先进并取名为B的语言,通过不断修改、完善,更先进的C语言问世了。C语言是一种功能强大、应用广泛、具有发展前途的计算机语言。它既可用于系统软件的设计,也可用于应用软件的开发。许多著名的系统软件都是由C语言编写的。C语言具有下列特点:(C语言既具有低级语言直接操纵硬件的特点,又具有高级语言与自然语言和人的思维逻辑相似的特点,C语言程序易编写、易查错,而且实用性很强。(C语言具有丰富的数据类型和运算符,语法结构简单。(C语言是一种结构化程序设计语言,提供了完整的程序控制语句。(C语言是一种模块化程序设计语言,适合大型软件的开发和研制。(C语言还有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型,其程序移植性好。.C语言的数据类型数据是程序处理的对象,数据类型是数据的内在表现形式。例如,学生的年龄和成绩具有一般数值的特点,在C语言中称为数值型,其中年龄是整数,称为整型;成绩可以为小数,称为实型。而学生的姓名和性别是文字,在C语言中称为字符型数据。C语言具有丰富的数据类型,其中基本的数据类型有整型、实型、字符型。..变量变量是在程序执行过程中其值可以被改变的量。.变量命名规则和人的取名一样,变量的命名也有一定的规则。(由字母、数字和下划线组成;(必须以字母或下划线打头;(字母区分大小写(在系统默认状态下;(前个字符有效(在系统默认状态下。例如:a,Book,book,_Make_Cipher都是合法的变量名,且Book与book是不同的变量名,而A,x+y都不是变量名。.变量的数据类型变量可以是任意的一种数据类型,如整型变量、字符型变量、指针变量等。C语言中的基本数据类型及其特性如表-所示。表-C语言的基本数据类型数据类型名数据类型描述数据类型的长度(字节数据取值范围char字符型~int有符号整型–~unsignedint无符号整型~short短整型–~long长整型–~unsignedlong无符号长整型~float单精度实数|.×–|~|.×|double双精度实数|.×–|~|.×|longdouble长双精度实数|.×–|~|.×|.变量的定义每个变量在使用前都必须先定义其数据类型,定义变量数据类型的语法格式如下:数据类型符变量名,变量名,…;例如:intage,score;/*定义年龄和成绩为整型*/charname;/*定义姓名为至多含个字符的字符数组*/.变量的存储类型当定义某个变量时,C语言的编译系统就要给该变量分配若干个存储单元用来存放该变量的值。而在计算机中寄存器和内存都可以存放数据,内存又可分为临时占用和长期占用。变量的存储类型是指变量在计算机中的存放位置及时间。定义变量存储类型的语法格式如下:存储类型符数据类型符变量名,变量名,…;变量的存储类型有自动型(auto、寄存器型(register、静态型(static和外部型(extern,具体特点和使用方法在后面的章节中详细介绍。在变量定义时,如未说明存储类型,则系统默认为自动型(auto。.变量的初始化变量的初始化是给变量赋初值的一种方法,是指在变量定义时就给变量赋予初始值。变量初始化的方法很简单,在变量定义的语句中,在变量名后加一个等号和初值即可。例如:intx,age=,score=;在上面的定义中,变量x未赋初值,而变量age和score的初值分别为和。在程序中,变量未赋值之前不允许使用,即要遵循“先赋值后使用”的规则。..常量常量是在程序运行过程中值不发生改变的数据。例如,圆周率.就是一个常量。常量也有数据类型,它们是整型常量、实型常量、字符常量、字符串常量及符号常量,整型常量及实型常量的数据长度及取值范围与变量的规定相同。.整型常量整型常量用来表示整数,整型数据可以以不同数制形式来表示,不同的进位制有其不同的表示方式,其表示方式如表-所示。表-整型常量的表示方式数制表示方式示例十进制一般整数的写法,–,八进制在八进制整数前加数字,–,+十六进制在十六进制整数前加数字和字母xx,xB,–xb另外,对于长整型常量,应当在其后加后缀L或l,例如L。L和数值一样,但占用内存的大小不一样。占用个字节的存储空间,而L占用个字节的存储空间。.实型常量实型常量只有十进制数表示方式,它没有单精度和双精度之分。其表示方式有定点数表示和浮点数表示两种。具体表示方式如表-所示。表-实型常量的书写方法类别表示方式示例定点数整数部分.小数部分.,.,–.浮点数尾数E(或e指数.E,–.e–说明:(浮点数表示方式相当于数学中的科学计数法,其换算公式如下:尾数E(或e指数=尾数×指数(浮点数中的指数部分只能是整型数,尾数可以大于或等于。.字符常量字符常量是用两个单引号引住单个字符来表示的。例如:’A’、’*’、’!’等。使用字符常量时应注意以下几点:(空格也是字符,表示为’a’。(单引号中必须恰好有一个字符,不能空缺。如’’是错误的字符常量。在C语言中有一类特殊的字符常量,被称为转义字符。它们用来表示特殊符号或键盘上的控制代码,常见的转义字符如表-所示。表-常用转义字符表转义字符意义转义字符意义

  ⒋回车换行符a响铃 水平制表符“双引号v垂直制表符’单引号b左退一格\反斜杠

  ⒌回车符ddd~位八进制数ddd对应的字符f换页符xhh~位十六进制数hh对应的字符.字符串常量字符串是用双引号引住的若干个字符。例如,“hello!“,““,“a“。字符串可以不含任何字符,称为空串,表示为““。字符串中所含的字符个数称为字符串的长度。例如,“abc“,““,““的长度分别为,,。计算字符串长度时应注意以下几点:(对于含有转义字符的字符串,应将转义字符计算为个字符。例如,“abc\

  ⒍“的长度为,而不是;“abc\

  ⒎“的长度均为。(在字符串中,反斜杠表示转义字符的开始,如果其后面没有表-中所列出的转义符号,则该反斜杠被忽略,并不参与计算长度。例如,“A“的长度为,但““是非法的。.符号常量上面所介绍的常量都是具体数据,在程序中也可以用特定符号来表示某个常量,这个符号被称为符号常量。符号常量的语法格式如下:#define符号常量名常量例如:#definePI.经过上述定义后,可以在程序中使用PI来代替.。在程序中使用符号常量有两个好处:一是提高了程序的易读性;二是为修改程序提供了方便。例如,当不需要太高精度时,只需要将符号常量定义修改为#definePI.而不需要在程序中去修改每一处的圆周率。.算术运算符与算术表达式用来表示各种运算的符号称为运算符。C语言中包括以下七大类的基本运算符:算术运算符、逻辑运算符、关系运算符、赋值运算符、逗号运算符、条件运算符和位运算符。本节主要介绍算术运算符,其他的运算符将在后续章节中详细介绍。..算术运算符C语言中的算术运算符和数学中的算术运算相似,是对数据进行算术运算的。算术运算符的运算对象、运算规则及结合性如表-所示。表-算术运算符运算对象个数名称运算符运算规则运算对象数据类型结合性单目正+取原值整型或实型自右向左负–取负值双目加+加法运算自左向右减–减法运算乘*乘法运算除/除法运算模%整除取余整型单目增(前缀++先加,后使用整型、字符型、指针型变量或数组元素、实型自右向左增(后缀++先使用,后加减(前缀––先减,后使用减(后缀––先使用,后减在C语言中,参加运算的对象个数称为运算符的“目”。单目运算符是指参加运算的对象只有一个,如+,–,x++。双目运算符是指参加运算的对象有两个,如+,%。相同运算符连续出现时,有的运算符是从左至右进行运算,有的运算符是从右至左进行运算,C语言中,将运算符的这种特性称为结合性。加法(+、减法(–、乘法(*与数学中的算术运算相同。例如:.+.结果是.;.–.结果是–.;.*.结果是.。除法运算(/与数学中的除法不完全相同,它与参加运算的对象的数据类型相关。当参加运算的两个对象均为整型数据时,其运算结果为数学运算结果的整数部分。如/结果为,而不是.。若参加运算的两个对象有一个是实型或两个都是实型,那么运算结果为实际运算的值,如/.的运算结果为.。模运算的运算对象必须为整型,结果是相除后的余数,如%结果为。增减运算符都是单目运算符,用来对整型、实型、字符型、指针型变量或数组元素等变量进行加或减运算,运算的结果仍是原类型。..常用数学函数C语言系统提供了多个标准函数(称为库函数,设计程序时可以直接使用它们。库函数主要包括数学函数、字符处理函数、类型转换函数、文件管理函数及内存管理函数等几类。下面介绍常用的数学函数,其他类型的函数将在后面章节中陆续介绍。.函数名:abs原型:intabs(inti);功能:求整数的绝对值。例如,设x=abs(),y=abs(–),z=abs(),则x=,y=,z=。.函数名:labs原型:longlabs(longn);功能:求长整型数的绝对值。例如,设x=labs(L),y=labs(–),z=labs(),则x=,y=,z=。.函数名:fabs原型:doublefabs(doublex);功能:求实数的绝对值。例如,设x=fabs(.),y=fabs(–.),z=fabs(),则x=.,y=.,z=。.函数名:floor原型:doublefloor(doublex);功能:求不大于x的最大整数,它相当于数学函数。例如,设x=floor(–.),y=floor(.),z=floor(),则x=–,y=,z=。.函数名:ceil原型:doubleceil(doublex);功能:求不小于x的最小整数。例如,设x=ceil(–.),y=ceil(.),z=ceil(),则x=–,y=,z=.函数名:sqrt原型:doublesqrt(doublex);功能:求x的平方根。例如,设x=sqrt(),y=sqrt(),则x=.,y=..函数名:log原型:doublelog(doublex);功能:求x的常用对数。.函数名:log原型:doublelog(doublex);功能:求x的自然对数。.函数名:exp原型:doubleexp(doublex);功能:求欧拉常数e的x次方。.函数名:pow原型:doublepow(intp);功能:求的p次方。例如,设x=pow(),y=pow(),则x=,y=.函数名:pow原型:doublepow(doublex,doubley);功能:求x的y次方。例如,设x=pow(,),y=pow(–,),则x=,y=.函数名:sin原型:doublesin(doublex);功能:正弦函数。.函数名:cos原型:doublecos(doublex);功能:余弦函数。.函数名:tan原型:doubletan(doublex);功能:正切函数。..算术表达式由算术运算符和运算对象连接形成的式子称为算术表达式。算术运算符的优先级从高到低规定如下:++––*/%+–位于同一行的运算符的优先级相同。.数据类型转换规则对数据进行运算时,要求参与运算的对象的数据类型相同(运算得到的运算结果的类型与运算对象也相同。因此,在运算过程中常常需要对变量或常量的数据类型进行转换,转换的方法有两种,一种是系统自动转换(又称为隐式转换;另一种是在程序中强制转换(又称为显式转换。..自动转换规则在不同类型数据的混合运算中,由系统自动实现转换。转换规则如下:(若参与运算的数据的类型不同,则应先转换成同一类型,然后进行运算。(将低类型数据转换成高类型数据后进行运算。如int型和long型运算时,先把int型转换成long型后再进行运算。类型的高低是根据其所占空间的字节数按从小到大的顺序排列的,顺序如下:char,int,long,float,double。(所有的浮点运算都是按照双精度进行运算的,即使仅含float型单精度量运算的表达式,也要先转换成double型,再作运算。(char型和short型参与运算时,必须先转换成int型。例如,设有:floatPI=.;ints,r=;s=r*r*PI;因为PI为单精度型,s和r为整型,在执行s=r*r*PI语句时,r和PI都转换成double型后再进行计算,运算结果也为double型,右边的运算结果为.,但由于s为整型,故应将赋值号右边的运算结果转换成整型(舍去小数部分,因此s的值为。..强制类型转换强制类型转换是通过类型转换运算来实现的,其语法格式如下:(类型说明符(表达式其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如:(float)a把a转换为实型;(int)(x+y)把x+y的结果转换为整型;而(int)x+y则只将x转换为整型。在使用强制类型转换时应注意以下问题:(类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则只是把x转换成int型之后再与y相加。(对于被转换的单个变量而言,无论是强制转换还是自动转换,都只是为了本次运算的需要而对变量的数据长度进行临时性转换,而不会改变变量定义时所声明的类型。例如,设有:floatf=–.;intx;x=(int)f;将f强制转换成整数–,因此x=–,而f本身的类型并未改变且其值仍为–.。.程序结构..主函数结构每一个C源程序都是一系列函数的集合。其中,必须有且只能有一个主函数,其函数名为main,其结构如下:voidmain(void){…}其中,voidmain(void)称为函数说明部分(又称函数头,而{…}称为函数体,函数体中的每个语句行末尾都必须用分号结束。..文件包含命令C语言系统提供了多个库函数,并将这些函数根据其功能分成了若干组,每组都有一个组名。如数学类函数组的组名为math。在C语言系统所安装文件夹的下级文件夹中有一个与其相对应的文件math.h,这些扩展名为.h的文件称为头文件。include称为文件包含命令,当用户在程序中使用到系统的标准库函数中的函数时,需要在程序中(一般在程序的首部增加一条预处理语句如#include《stdio.h》,以便告知系统需要使用某个头文件中的函数。..C语言程序基本结构一个完整的C语言源程序由如下个部分构成:(预处理命令;(全局变量说明;(函数原型说明;(主函数;(其他子函数。一个简单的C语言源程序只需要(和(两个部分,其中“预处理命令”一般是一系列文件包含命令,即include命令。关于程序结构,应当注意以下几方面的问题:(可由若干个函数构成,其中必须有且只有一个以main命名的主函数,可以没有其他函数。每个函数完成一定的功能,函数与函数之间可以通过参数传递信息。main()函数可以位于原程序文件中任何位置,但程序的执行总是从main函数开始,main函数执行完毕时程序执行结束。(子函数的结构与主函数相同,即分为函数说明部分和函数体两个部分。(函数中的每个语句最后要有一个分号,作为语句结束标记。但某些特殊的语句行末尾不需要分号,有时还不能有分号。(“/*”和“*/”括住的任意一段字符称为“程序注释”,用来对程序作说明,可以插入到程序的任何地方,且可以跨行使用。程序注释不影响程序运行结果。(函数的书写格式很灵活,在一行中可以书写多个语句(每个语句末尾都要有分号,一个语句也可以写在多行中。在程序的任何地方都可以插入空格或回车符。(主函数可以调用任何子函数但不能调用它自己,任何子函数之间也可以相互调用,但是子函数不能调用主函数。下面是一个简单的C语言源程序:【例-】求圆的面积。#include《stdio.h》voidmain(void){floatr,s,p=.;r=.;s=r*r*p;printf(“圆的面积是:%f“,s);}下面是一个较完整的C语言源程序:【例-】较完整的C语言程序示例。#include《stdio.h》#include《conio.h》inty,z;voidabc(intx);voidmain(void){intx;clrscr();x=;y=;z=;printf(“ok:x=%dy=%dz=%d

  ⒏“,x,y,z);abc(x);printf(“ok:x=%dy=%dz=%d

  ⒐“,x,y,z);getch();}voidabc(intx){inty;printf(“ok:x=%dy=%dz=%d

  ⒑“,x,y,z);x=;y=;z=;printf(“ok:x=%dy=%dz=%d

  ⒒“,x,y,z);}

  ⒓要快速入门c,首先找最基础的c语言的经典书籍,如清华大学出版社出版的谭浩强主编的《C语言程序设计》;当你初步了解它时,不要着急深入,而是要考验自己是否真的掌握这些知识,也就是灵活运用所学知识。当你能将现实与抽象之间的转换初步掌握熟练时,再考虑更深的层次,那时就要看你要选择的发展方向了。也就是说,学习一门语言不要考虑太远,要将最基础的牢牢掌握并灵活运用,那么以后的学习难度将大幅度降低,学习创造的灵感也将源源不断。(当然语言的学习同样需要大量的练习和思考

您可能感兴趣的文章:

相关文章