1. C语言概述
1.1 C语言功能
a. 运行效率高,现在已经代替了汇编语言。
b. 编程效果和高级语言基本一致(JAVA)。
c. 代码量小,速度快,功能强大。
d. C语言是最广泛使用的系统程序设计语言。
1.2 编译
编译(Compile):编译器识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式的过程。
C程序编写完成后,首先通过编译转换成目标文件,然后通过C语言函数库连接创建可执行程序,最后才可以执行该程序。
文件类型 | 解释 | 表示形式 |
源文件 | 用户创建文件 | .c |
目标文件 | 编译器的输出结果 | .o 或者 .obj |
头文件 | 含有函数声明和预处理语句,用于帮助访问外部定义的函数。 | .h |
可执行文件 | 连接器的输出结果。 | .exe |
IDE(Integrated Development Environment,集成开发环境)。
2. C语言结构和语法
2.1 Hello world实例
#include<stdio.h> // 以#开始的语句叫做预处理指令,告诉编译器在编译前要包含的头文件。stdio.h包含输入输出语句相关函数。
int main() //主函数,程序执行的入口。mian()函数可以返回返回值也可以不返回,如果不返回的话使用关键词void。
{
printf(“Hello world!\n”); //打印函数,在屏幕上显示消息,并换行(\n)。
return 0; //终止main函数,并返回值0。
}
scanf():从标准输入读取信息函数 &用于指明在内存中的位置。
printf():标准输出函数
举例: double sum=168.1790021 printf(“%7.2f”,sum); 输出结果为: _ 168.18 .2 为小数点后的位数,7为总位数
2.2 C数据类型
基本类型:算术类型,包括两种类型:整数类型和浮点类型。
枚举类型:算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。
void 类型:类型说明符 void 表明没有可用的值。
派生类型:包括:指针类型、数组类型、结构类型、共用体类型和函数类型。
2.3 常量与变量
(1) 变量的名称可以由字母、数字和下划线字符组成。但必须以字母或下划线开头,C语言区分大小写,所以变量price与变量PRICE是两个不同的变量。
(2) 常量是固定值,可以是任何的基本数据类型,常量的值在定义后不能进行修改。
(3) 全局变量和局部变量
全局变量
定义所有函数外部;从定义的时候开始分配空间,到整个代码执行结束,空间就被释放;
作用域:从变量定义位置以下,所有函数都能使用和修改;
初始值:默认为0;
局部变量
定义在函数内部或者复合语句中;从局部变量所在的函数被调用,才会为其分配空间;
作用域:只能用于变量所在函数的内部或者复合语句中;
初始值:默认为随机数;
注意:全局变量与局部变量重名,会怎么样?
采取就近原则,局部变量所在的函数内部,会优先选择使用局部变量;
2.4 形参与实参
1) 形参只在函数被调用时才会分配内存,调用结束后,立刻释放内存,只有在函数内部使用有效。
2) 实参可以是常量、变量、表达式、函数等类型的数据,在进行函数调用时,必须有确定的值,以便把这些值传送给形参,应提前用赋值、输入等办法使实参获得确定值。
3) 实参和形参在数量、类型、顺序上必须严格一致,否则会发生“类型不匹配”。函数调用中发生的数据传送是单向的,只能把实参的值传送给形参,而不能把形参的值反向传送给实参。 因此在函数调用过程,形参的值发生改变,而实参中的值不会变化。
2.5 存储类型关键字
(1) auto关键字
auto关键字是所有局部变量默认的存储类。只能用在函数内,只能修饰局部变量。
(2) register关键字
register关键字用于定义存储在寄存器中而不是RAM中的局部变量。寄存器只用于需要快速访问的变量。
(3) static关键字
static关键字指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。 因此,使用static修饰局部变量可以在函数调用之间保持局部变量的值。当static修饰全局变量时,会使变量的作用域限制在声明它的文件内。
(4) extern关键字
extern用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。extern是用来在另一个文件中声明一个全局变量或函数。即适用于两个文件以上。
2.6 C运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。
算术运算符: + - * / % ++ --
关系运算符: == != > < >== <==
逻辑运算符: && || !
位运算符 : & | ^ ~ << >>
赋值运算符: = += -= *= /=
杂项运算符: sizeof() 返回变量值 & 返回地址 * 指向变量 ?: 条件表达式
3. 语句
1. if语句
#include <stdio.h>
int main()
{
int a, b, max;
printf("输入两个整数: ");
scanf("%d %d", &a, &b);
if(a>b) max=a;
else max=b;
printf("%d 和%d 的较大值是: %d\n", a, b, max);
return 0;
}
2. switch语句
一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个switch case 进行检查。
3. while循环
#include <stdio.h>
int main()
{
int i=1, sum=0;
while(i<=100)
{
sum+=i;
i++;
}
printf("%d\n",sum);
return 0;
}
4. for循环
#include <stdio.h>
int main()
{
int i=1, sum=0;
while(i<=100)
{
sum+=i;
i++;
}}
printf("%d\n",sum);
return 0;
5. do while循环
#include <stdio.h>
int main ()
{
int a = 10;
do{
printf("a 的值: %d\n", a);
a = a + 1;
}while( a < 20 );
return 0;
}
6. 循环控制语句
break语句
终止循环或 switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句.
continue语句
告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
goto语句
将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。