将我大一学习C语言时做的笔记拿来与大家分享,内容比较浅显,比较适合初学者,如有错误还请见谅,提出改正,谢谢!
前言:此C语言笔记是本人在自学时记录的一些重点或初学者常犯的错误,希望我的这本笔记能够对大家的C语言的学习有所帮助。
C语言学习笔记
C语言重点:流程控制、函数、指针、动态内存分配。
第一章、学前知识概述
小知识
1.如何看懂一个程序?
流程、功能、试数 (按电脑的思维去看一个程序)
2.变量的实质是内存的一块存储空间
3.分配内存是操作系统把某一块内存空间的使用权限分配给该程序;
释放内存是操作系统把分配给该程序的内存空间的使用权限收回,该程序就不能够再使用这一块内存空间。
注意:分配内存是指内存权限的分配,释放内存并不是把内存的内容清零,原数据会被保留而成为垃圾数据,所谓空闲内存并不是指没有内容的内存,而是没有被占用的可供分配的内存,尽管里面是垃圾数据,但操作分配给程序权限使程序可修改内存空间中的垃圾数据以供程序继续使用。
内存是由操作系统直接控制的,自Windows 2000以后,操作系统不允许程序直接访问内存,而只能通过请求操作系统来访问内存,以前Windows 98和Windows ME等允许程序直接访问内存和通过操作系统访问内存两种途径。
常见运算符
算术运算符:
+ - × / %(取余数)
关系运算符:
> >= < <= !=(不等于) ==(等于)
(3==5的值为布尔型,即为0) 非零是真零是假;真是1表示,假是0表示。
注意:= 为赋值 == 才为等于
逻辑运算符:
!(非) &&(且) ||(或)
注意:逻辑运算符和关系运算符的结果只能为真或假,真用1表示,假用0表示,即成立或不成立。常在if和while中使用。
赋值运算符:
= +=(加等) -=(减等) *=(乘等) /=(除等)
a+=3 :== a=a+3
a/=5 :== a=a/3
而并不是表示i大于等于80小于90。
优先级别:算术>关系>逻辑>赋值
注意用括号!!!
int m;
int k = 10;
m = (21>3) && (k=5); //m为布尔型值,k=5为真,当且仅当k=0时才为假,即0为假,其他数为真
printf("m=%d, k=%dn", m, k);//当左边无法判断m的真假值时,右边才执行;若左边即可以判断m值的真假,右边不执行。
&&左边的表达式为假时,右边的表达式肯定不会执行
||左边的表达式为真时,右边的表达式肯定不会执行
强制类型转化: 格式:(数据类型)(表达式)
inti;
floatsum = 0; 功能:把表达式的类型强制转化前面数据类型所指定的类型
for(i=1;i<=100;++i)
//sum= sum + 1.0/i;
sum= sum + 1/(float)(i); //强制将i的类型转化为浮点型。
printf("sum= %fn", sum); //浮点型必须以%f(或%lf)控制输出
输入控制符:
printf与scanf在输出(输入)控制时,前面的控制符与后面的取值是一一对应的。
scanf("%d %d %d", &i,&j, &k); //空格可连续赋值,也可点回车后一个一个赋值,比较方便。
scanf("%d,%d,%d", &i, &j, &k); //而此种带必须输入非输入控制符“,”,否则无法完成三个变量的赋值。
doubledelta;
printf("请输入delta的值:");
scanf("%lf",&delta); //上面定义delta为什么类型变量,输入控制时就必须使用什么类型控制符, 否则会出错!!!
注意:输入/输出控制符与输入/输出参数必须一一对应
注意scanf()中的取地址符&
int 98---默认十进制
int 098---八进制
int 0x(X)98---十六进制
输出控制符:
%x(X): 输出为十六进制整型(字母大小写) %#x(X):输出为Ox(X)十六进制整型
%d:输入输出为整型
%ld:长整型
%hd:短整型
%hu:无符号整型
%u %lu %s:输入输出为字符串
%c:输出为字符
%f:输入输出为浮点型
%lf:双精度浮点型
字符的存储:
整数是以补码的形式转化为二进制代码存储在计算机中的;
实数是以IEEE754标准转化为二进制代