关于C语言知识调查
因为上一篇随笔对这一部分写得不够清楚,因此在这篇做一些补充。
你是怎么学习C语言的?
起初,对于C语言的学习主要是通过老师课堂的教学,完成相关的课后作业。与我的技能相比的话,他们都有一个共同点需要去实践,需要尝试,要自己去敲代码,对于教训的话,比如在之前很多情况下,对于书上的一些代码例题,认为自己一看就会,已经掌握了方法。比如对于一开始学习冒泡排序的时候,看了书上的例题感觉自己会了,等到做编程题的时候,发现自己敲出的冒泡排序漏洞百出,最终还是翻开书本一一对照,比较我的代码与书上的差别。发现自己在处理循环的结束条件和中间的排序与书上有较大的差别。唉,这就很尴尬了。这就当成一个大的教训吧。因此对于敲代码还是要自己敲敲看,才能熟练。对于编写一个关于计算代码行数的计算程序,目前还不会。只能自己去估计。自我认为对C语言的理解情况,只能就掌握了它的皮毛。
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
数组指针:在代码中可以这样表示 int (a)[10]; 在应用中较常出现的是,二维数组指针。有了数组指针,对于二维数组有更好的表达它的地址。例如&a[i][j]就是指((p+i)+j)两者等价,可以把(a)[10]理解成一个数组里含有10个指针(怎么说,这里有点乱乱的,有点说不出来)尴尬 T_T 。
指针数组:在代码中的表示 int a[10]; 说明有十个指针。其所含的元素都是指针,其中a[i]指的是第i+1个元素的地址。
函数指针:指向函数的指针,比如:int (p)(int x, int y,);本质是指针,举个例子吧:
其中int (p)(int a,int b);中 p指向了max函数。
指针函数:代码表示 : int p(int x);对于表达就是有无括号的区别。本质是函数,指针型函数。但他的返回值是一个地址。然后其返回值也要赋值给一个指针。我的理解是先把p(int x)看成一个整体,加上就是变成其地址(指针)。所以返回值是个指针。
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
在没写这个随笔之前都不知道流的意思。查阅了一下资料,文件是数据的基本单位,是用于数据读取,保存的地方。流指的是字节序列的抽象概念,是信息的转换,有输入流和输出流。。。。可以说是一个信息通道吧。文本文件和二进制文件,我认为是内部表达上的不同,二进制文件,是把数据以二进制的形式储存下来。简单的说 用记事本打开不会乱码就是文本文件,会乱码就是二进制文件。具体操作,不会。
学过了C语言,你知道什么叫面向过程程序设计吗?
我认为面向过程程序设计,面向过程是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。解决问题,按照一定的流程步骤来解决。
在C语言里面,什么是模块?你写过多个源文件的程序吗?学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
模块,我认为是把一个程序内容分开,成一个个区域,然后在主函数中调用,也就是利用函数,将一个庞大的程序模块话,利用函数实现其各种功能。而高内聚,低耦合也是这个意思,就是对函数的巧用,使整个程序看起来不会冗长,很复杂。让程序员看得较清楚。
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
这一部分在上一篇随笔提到了,目前对于排序还只是停留在冒泡排序法上面,还有很多排序法没有去了解。过几天的话,如果可以我再把学到的排序写出来0.0。
写一个程序,统计自己C语言共写了多少行代码。(将上述多个程序的Github链接附在随笔上,可以在随笔上附上关键而非全部代码)你知道什么是断点吗?给出自己调试程序的例子。(可以截图贴图说明)
对于编写程序计算代码行数目前还不会。只能复制下来,观察。。。。至于断点的话,适用于调试程序错误时用到的,当程序出现错误,利用它,结束程序,目前我知道exit();这个结束程序的方法0.0。不过,在目前,我调试并发现错误,一般是用printf();来观察的。
对比C语言的学习,你对《面向对象程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
具体目标就是好好读书吧,只能通过勤敲代码来提高能力和思维吧。感觉对于编程的学习,是要通过“做中学”才能有效提高,对于不懂的知识,在求解问题的过程中,对它进行了解,并学下来。我认为,编程许多问题是要在敲代码的时候才会显现出来,然后在过程中学习,解决疑问。
这篇就先写成这样吧,上次没有用Markdown来编写,这次补上0.0。