郝斌老师C语言学习笔记(一)

在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值。当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常规的数而使程序员误以为自己已给变量进行过初始化),这个“85”开头的数叫“填充字”,提醒程序员没有初始化变量。

  1. #include<stdio.h>
  2. int main(void)
  3. {
  4. int i;
  5. printf("i = %d\n", i);
  6. }

运行后:

郝斌老师C语言学习笔记(一)
  变量对应于内存中的一个存储单元,变量的本质是  "内存中一段存储空间"

简单一元二次方程示例:

C代码  郝斌老师C语言学习笔记(一)

 # include <stdio.h>
# include <math.h> int main(void)
{
//声明变量
int a = ; // = 是赋值的意思
int b = ;
int c = ;
double delta; //保存解的个数
double x1,x2; //保存解 delta = b*b - *a*c; if(delta>) {
x1 = (-b + sqrt(delta)) / (*a);
x2 = (-b - sqrt(delta)) / (*a);
printf("该一元二次方程有两个解, x1 = %f, x2 = %f\n", x1, x2);
}else if(delta==){
x1 = x2 = (-b) / (*a);
printf("该一元二次方程有一个解, x1 = x2 = %f\n", x1);
}else{
printf("无解");
}
return ;
}

大纲笔记:

C语言概述

1、为什么学习C语言

1)C的起源和发展

第一代语言:机器语言01代码

第二代语言:汇编语言就是简单的助记符ADD

第三代高级语言:结构化语言(面向过程)C,Fortran用于

科学计算Basic演变为VB,Pascal

用于教学。

面向对象(OO)C++,java(SUN改造过),

C#(微软改造的),后两种都是针

对C++改造的。因为C++比较复杂。

结构化语言有缺陷:数据和操作分离。如果你学会C++

那么剩下都不用学了。因为它都包括了面向过程和对象

2)C的特点

优点:

代码量小(WPS)   速度快    功能强大(写操作系统)

缺点:

危险性高:(同样的程序java中就会报错)可以随便写

开发周期长:因为它是面向过程语言,10万行代码以上容易崩溃

可移植性不强:因为java的可移植性太强了。C的话两台机器跑

起来可能不一样。

3)C的应用领域

系统软件开发:

操作系统:三大

驱动程序:主板驱动、显卡驱动、摄像头驱动

数据库:DB2,Oracle,Sql server

应用软件:

办公软件:WPS

图形图像多媒体:ACDSee,PS,MediaPlayer

嵌入式软件开发:智能手机,掌上电脑

游戏开发:2D,3D游戏(CS整个引擎都是纯C。魔兽不是

4)C的重要性

有史以来最重要的语言

所有大学工科理科学生必修课程

系统软件都是用它开发

合格黑客必须掌握

程序员必须熟练

大企业、外企招聘必考

为数据结构,C++,java,c#做准备

2、怎样学习C语言

每一讲分四次课

前两节课为理论课,讲授理论知识

后两节课为上机课,在机房完成当堂练习

要去:

当堂练习必须在两节上机课中完成

机房随时有辅导老师辅导

老师检查后方可离开

途径:多思考,多上机

目标:能看懂程序,能调试程序,自学能力要很强

其实就是犯错误的过程,肯定会有错误,全都出完了,就学好了。

参考资料:

谭浩强《C语言程序设计》清华    绝对入门经典(就是自己能看懂)

《C Primer Plus》人民邮电  60元   语法

《C和指针》 人民邮电   65元

在想变成高手看:

《C专家编程》  绝版

《C陷阱与缺陷》人民邮电   30元

3、学习的目标

了解程序语言及发展历史

熟练掌握C语言的语法规则

掌握简单的算法

理解面向过程的思想,这非常有助于将来对面向对象思想的学习

能看懂程序

会调试程序

掌握将大问题转化为一系列小问题来求解的思想

为将来学习C++,数据结构,C#,java打下良好的基础

4、常见问题答疑

1、学习java为什么建议先学C语言

a)学习C就是学java,因为C语言至少80%的语法知识都被

java继承过来了。

b)C是面向过程语言的代表,学好C有助于学习java中面向

对象的思想

c)学好C中的指针是理解java中引用的基础!如果不懂指针

就不可能对java中的引用由深刻的理解,而引用是java中

一个最基本但又十分重要的概念。

2、没学过计算机专业课程能够学懂C语言

有郝斌老师在怕什么?

3、英语和数学不好能学好C么?

如果懂更好,如果不懂不影响对其的学习。数学知识只有在你

研究高深算法的时候才需要。

5、课程计划

共23讲

C语言简介

第一讲   基本编程知识     1讲

第二讲   数据类型         1讲

第三讲   运算符和表达式   1讲

第四讲   流程控制         4讲

第五讲   函数             2讲

第六讲   数组             1讲

第七讲   指针             4讲

第八讲   变量的作用域和存储方式     1讲

第九讲   扩展数据类型              1讲

第十讲   专题:

字符串的处理         1讲

进制转换             1讲

补码                 1讲

动态内存分配         1讲

综合应用:链表的使用  2讲

6、举例子:一元二次方程

C语言编程预备知识

1、cpu 内存条 硬盘 显卡 主板 显示器之间的关系

2、HelloWorld程序如何运行起来的

3、什么是数据类型

编程受限就要考虑数据,怎样去保存它,就和数学上的数字一样

基本数据类型:

整数:

整型int 4  短整型short int 2, 长整型long int 8

【浮点数(计算机内不能定点存储)】实数

单精度浮点数float 4

双精度浮点数double 8

字符

char

复合类型数据:(把基本类型复合起来)

结构体

枚举

共用体

4、什么是变量

方便找到一个和空闲内存单元一一对应的代码。

避免了程序员自己去找空闲单元的编号,由操作

系统完成。

变量的本质就是内存中的一段存储空间。

5、cpu 内存条 VC6 操作系统之间的关系

VC6向操作系统请求在内存中开辟一段内存,VC在使用这些内存

完成程序运行

6、变量为什么要初始化

所谓初始化就是赋值的意思。那个很大的值其实是填充字很大

真实的值是随机值,是上一个软件使用过遗留下的,这个很大

的填充值就是为了提醒你这个值未被初始化。

7、如何定义变量

8、什么是进制

9、常量在C语言中是如何表示的

10、常量是以什么样的二进制代码存储在计算机中的

tips:

1、html是借助于浏览器运行的

2、C语言编写好的代码是借助于VC6运行的

3、要想改变dos框的属性,右键单击标题栏

4、机器语言速度最快,最慢高级语言,C又比java,C#快

5、Basic在计算机中有简化的意思

6、B语言写出了世界上第一个操作系统UNIX,光盘就有十几张很大

主要用在大型机、商务机。因为其稳定,不可能用Windows,因

为容易挂,不稳定。

7、B语言的创始人的同事扩充了B得到了C语言并且用此写了UNIX第五版

这个系统流行了起来所以C语言也流行了起来。UNIX开源的,你要改

就要学习C语言。

8、C语言中必学的是函数和指针。94年C99标准一直用到今天

9、金山公司一直最挣钱的就是WPS。*订购。他的一个强大功能是可以

转成pdf格式的,microoffice没有此功能。

10、WPS安装包很小,因为它是用C语言写的内核。

11、三大操作系统windows(内核用C外壳用C++),unix和linux都是用

C写的。因为它很快。硬件由操作系统控制。以前在dos下可以直接

控制硬件,现在必须通过操作系统。

12、C可以访问硬件,指针。java没有指针。

13、招聘现在基本分三块:c/c++,java,c#.前者工资最高。

14、蠕虫病毒,C语言有个gets()函数,他是向硬盘写东西,无长度限制

后来就改用fgets()有了限制,这样就不上了漏洞。

15、世界上绝大多数病毒都只能破换软件,只有一个能破换硬件的。

16、也可以用C语言编一个木马,它是背地里运行的,慢慢地就死机了

17、学数据结构最好用C语言学习

18、入门最基本的方法就是C语言入手。

当你成为C语言的高手,那么你就很容易进入到操作系统的平台里面去;

当你进入到操作系统的平台里面去实际做程序时,就会懂得进行调试;

当你懂得调试的时候,你就会发现能轻而易举地了解整个平台的架构。

这时候,计算机基本上一切都在你的掌握之中了,没有什么东西能逃得

出你的手掌心。

-----《编程箴言》梁肇新,超级解霸作者

19、王爽写的汇编的入门书也不错

20、C语言32个关键字作为保留。不能重做其他定义。

21、哲学是你对于世界的思考,数学又是其他一切学科的计算基础。

22、函数可以体现出面向对象和面向过程的区别。

23,任何语言的流程都是一样的。

24、动态内存分配学过之后才能理解数据结构。

25、VC6完全兼容C,所以你就选C++ Source File

26、先把硬盘上的数据存放在内存条上然后cpu在处理,因为它不能

直接处理硬盘数据。

27、主板就相当于为大家提供了一个怎样互相配合的环境

28、点感叹号的那个标志是运行.exe,这个是有cpu运行的。所有的运行都是cpu

29、在VC6中输入的字符和在记事本中是无区别的,通过编译链接产生exe

30、win98 winme是可以直接控制硬件的(编程序)。2000以后就只能操作系统控制

31、C的一个核心思想就是不限制程序员编写他想编写的内容。

32、C里面是没有这样一个数据类型来直接存放字符串的,C++和java都有

33、出错的位置和原因不一定就是真的,有可能在上下行找

34、我们硬件上的状态肯定是0、1不可能存在第三种状态,重启就是全0.

35、内存释放是指使用权限被收回

36、软件在运行期间,该软件所占空间不再分配给其他软件,当软件运行完毕

之后,操作系统将收回该内存空间,以便在分配给其他软件使用。

该文转载至http://duchengjiu.iteye.com/blog/1826488

上一篇:阿里的开源连接池框架druid的使用


下一篇:2017-04-21周C语言学习笔记