c语言第一课学习笔记--c语言介绍,变量常量,printf,scanf的用法
<1>c语言介绍
1)程序设计语言的发展
机器语言——汇编语言——高级语言
机器语言就是二进制代码;
汇编语言就是把二进制代码变成英文字母;
高级语言分为两类:结构化语言(比如说c语言)和面向对象语言(比如说c++)。
2)C语言的特点
优点:代码量小,速度快
代码量小是说为了实现某功能而做出的文件比较小;
速度快是因为,暂行的三大os是用c语言写的,而各种程序需要在os运行,想要程序快,所以os必须要快,os要快,所以C语言要快。
三大os包括:Linux,windows,Unix。
缺点:危险性高,开发周期长,可移植性不强
危险性高是因为c语言代码里的小错误不会被纠错;
开发周期长是因为这是面向过程的语言,容易崩溃;
可移植性不强是针对类似java这样的语言说的,就c写的程序,不同pc不一定可以跑起来,跑起来也不一定是同一个结果,而Java哪都能跑,且结果相同。
3)c语言的应用领域
可以用来进行软件开发,系统软件和应用软件都可以
系统软件有:os,驱动,数据库这类;
应用软件有:嵌入式软件开发(手机应用),办公软件开发(比如wps)等等
<2>一些预备知识
1)cpu,内存,硬盘,主板,显卡,显示器间的关系
程序被os从硬盘调度到内存中,由cpu执行,在显卡的作用下,在显示器上显示出画面。
主板是用来插硬件的,上面有一些电路,来负责各硬件之间的数据传输。
2)HelloWorld程序如何运行起来
敲出的代码经过编译,链接形成可执行的.exe文件,os调用该文件供cpu执行
3)os和内存在程序运行时发挥的作用
内存由os统一管理使用
运行前,程序要向os申请内存空间,如果内存空间足够,那么os会选取一块内存空间,将外存中的程序copy一份到这块内存上。在运行时,分配给这个程序的内存空间不会分配给其他程序。运行结束后,os会回收这块内存空间,但是不会删除这块内存上的数据(这就引入了变量为什么要初始化的问题)。
<3>变量
1)什么是变量
变量是一个字母,但是这个字母和内存中的一块空间对应,可以通过这个字母来使用内存中的一块空间。
2)变量是怎么申请的
比如 int i=3; 实际上是visual studio向os在内存申请了一块空间命名为i,并且把数字3存入这块空间。
3)变量为什么要初始化(赋值)
程序运行结束后,os回收内存空间,但是不会删除数据。所以等这块空间被再次分配的时候,上面会有之前程序残存的数据,会引起不必要的错误,所以要初始化。变量可以重复赋值,但是不能重复定义。
4)变量的数据类型
基本数据类型和复合数据类型
基本数据类型包括:
整形(整数),浮点型(实数),字符(符号)
整形有:int(4字节),short int(2字节),long int(8字节)
浮点型有:float(4字节),double(8字节)
字符:char(1字节);
1个字节=8bit。
复合数据类型有:结构体,枚举,共用体。
<4>常量
1)常量的分类有:整数,浮点数,字符
整数有二、八、十、十六进制的区别;
浮点数有传统写法(比如1.123)和科学计数法(比如112.3e-2是1.123);
字符中单个字符用单引号(比如‘A’),字符串用双引号(比如“AB”)。但是注意,”A”也对,因为默认表示‘A’和‘\0’组合成的字符串而不是只有A
2)常量的二进制代码存储形式
整数是补码,实数是IEEE754,字符是ASCII对应的整数形式
3)关于进制
n进制就是逢n进1
C语言中,十进制直接表示,二、八、十六进制前面加0b,0,0x,注意是零;
汇编中,二、八、十、十六分别加B,O,D,H,注意是欧。
有个问题:为什么计算机用二进制代码呢? 因为二进制只有两种状态,用一个硬件表示两种状态很容易
4)关于ASCII
ASCII不是一个数,是一种规则。他规定,字符和整数有一定的对应关系(比如’A’对应65),然后字符按照整数的形式(二进制补码)存储在内存中。
<5>printf
1) 用法:printf(“输出控制符,非输出控制符”,输出参数)
比如:int i=5;printf(“i=%d”,i);得到的输出结果为i=5。i=就是非输出控制符,%d就是输出控制符,i就是输出参数,可以看出非输出控制符原样输出。
2)输出控制符的作用:因为对于pc来说,这个5不是五,它存在计算机里面的只是一串二进制代码,这个%d告诉pc用把这一串二进制代码解析成十进制形式来输出。
<6>scanf
1) 用法:scanf(“输入控制符,非输入控制符”,输入参数)
比如:int i;scanf(“i=%d”,&i);那么你想要i为五的话,键入的时候就必须键入i=5。其中i=是非输入控制符,%d是输入控制符,可以看出非输入控制符原样键入。
2)输入控制符的作用:因为对于pc来说,你键入的5,pc只当他是字符,而不是数字五,所以%d告诉pc把5当作十进制的数字五来解释成二进制代码,存入i的内存空间里。
3)关于&
这是一个取地址符号,&i相当于是i在内存里面的地址
4)关于输入/出控制符
%f(浮点数),%c(单个字符),%s(字符串),%o,%d,%x(八、十、十六进制,没二进制);
%x,%X,%#x,%#X,比如47以这四种形式输出:x:2f, X:2F, #x:0x2f, #X:0X2F
5)干掉非法输入
while((ch=getchar())!=‘\n’)//ch=getchar是将键入字符获得字符赋给ch
continue;

浙公网安备 33010602011771号