这是我C语言程序设计的学习笔记
一、知识体系
N-S流程图法
程序的编译
Key Elements 1
常量、变量与常变量
数据类型
数组
Key Elements 2
运算符
C语句
Main Body = Elements 1+2
函数(参数+函数体)
程序结构(头文件,声明,函数,注释)
Advanced Operation
指针
结构体变量与链表
文件输入输出
二、 知识点
1. N-S流程图
顺序结构,选择结构,循环结构(当型和直到型)
总体效果
对于使用文本编辑器编写的程序,需要经历以下步骤行程执行代码:
2. Key Elements 1:常量、变量与常变量,数据类型,数组
*以上5个元素相当于一个C程序的“原材料”
常量 指程序中直接给定的数值,一般直接的数字或PI。
变量 顾名思义,一般先以“数据类型 标识符”形式定义,声明后可以直接用变量名调用。
关于局部变量与全局变量,这将在函数中讨论。
常变量 即在变量声明前加const,声明并定义后不得改变。
思考:常变量未初始化会怎样,可以先声明,然后使用时再初始化吗?
数据类型(整型,字符型,浮点型)
–整型 signed/[unsigned] short/long/long_long/[] [int]
注意signed与unsigned类型在赋值错误时的规避问题
–字符型 signed/unsigned char
使用 ’ ’ 定义字符(区别于字符串(数组)的“”),注意区别“值”与“字符”。字符型有转义字符一类
–浮点型 float, double, long double
4, 8, 8/16 bytes
数组(一维数组,二维数组)
数组的操作,一般有声明、初始化和调用三种,其中又在一维数组中引入字符串的概念*
(一维数组)
以“类型符 数组名[常量表达式/Null]”形式声明;初始化可直接给定数组各成员内容,或直接设定数组长度(此时自动初始化为0数值数组,‘0’字符数组或Null指针数组);调用时以“数组名[下标]”形式(下标从0开始,不得超出数组长度否则会显示乱七八糟的东西)。
(二维数组)
以“类型符 数组名[][]”形式声明;初始化可直接用={
{,},{,},{,}}形式,未给定时自动初始化形式与一维数组相同;调用情况亦相同。
字符型数组(字符串)(一维或二维都有),(一般声明和定义同时进行),系统会自动补’/0’。
3. Key Elements 2:运算符,C语句(控制,调用,表达式,空语句,语句块)
*以上相当于C程序的加工工艺
运算符
其中:
①注意区别++i,- -i,i++,i- -
②条件运算符(条件 ? 值1 : 值2),条件成立返回值1,不成立返回值2。(条件运算符有效简化了条件判断结构的使用)
③强制类型转换:(类型名)(表达式),注意转换的只是运算结果(一个临时中间数据),不影响初始参数的类型。
注意事项:
①关于运算符之间的优先级,运算按运算符的优先级自左向右,赋值自右向左;一般规律是,系统调用类型操作(如强制转换,取指之类)的优先级最高,算数运算符次之,再之关系运算符,逻辑运算符最低。但也有部分运算符的优先级挺高的,如
比算数还高,仅次于最高一类。
②不同类型数据的混合运算,会自动转化为内存最大的类型,再运算。也可强制转化类型(会有Bug)。
C语句(控制,函数调用,表达式,空语句,语句块)
一个语句后加分号“ ; ”
①控制语句
条件判断语句(可嵌套)
if(condition)
operation_1;//true
else
operation_2;//faulst
if(condition_1) operation_1;
else if(condition_2) operation_2;
else if(condition_3) operation_3;
...
选择语句
switch(variate)
{
case constan_1 : operation_1;...;
case constan_2 : operation_2;...;
...
default : operation_np1;
}
循环语句(当型,直到型,for型)(需保证不要陷入死循环)
whlie(condition)
{
...;//execute when true
}
do
{
...;
}while(condition)//continue the cycle when true
for(initialized variate;condition;increment)
//execute when true
{
...;
}
循环终止语句
break;//完全终止循环,对switch也管用
continue;//跳出当前循环
返回函数
func(parameters)
{
...;
return value;//返回数值
}
跳转函数
LOOP: //循环起点
...; //循环终点
goto LOOP; //跳转到循环起点(一般会设有条件触发跳转)
②函数调用语句(接下来的一部分详细讲)
func_name(parameter)