一.C语言的起源
贝尔实验室的 Dennis在1972年开发了C,当时他正与Ken Thompson一起设计UNIX操作系统。
二.设计特性
1.控制特性
其设计使用户可以自然地采用自顶向下的规划、结构化的编程。
2.高效性
C语言可以表现出通常只有汇编语言才具有的精细控制能力,可以细调程序以获得最大速度或最大内存的使用率。
3.可移值性
C是具有一定移植性的,虽然诸多版本的编译器让此事不那么容易,但是如果不包括那些为特定硬件或操作系统而编写的代码,还是可以实现的。
4.强大的功能和灵活性
强大而灵活的UNIX是由C编写的,其它语言(如FORTRAN,Perl,Python,Pascal,LISP,LOGO和BASIC)的许多编译器和解译器也是用C编写的,C程序已经用于解决特理学和工程学问题,甚至用来为《角斗士》这样的电影制造特珠效果。
5.缺点
C的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码,C语言的指针可以自由的访问内存,可能会犯下难以追踪的错误,自由的代价就是永远警惕与谨慎。
三.环境
1.UNIX
UNIX C编译器称为cc 要编译inform.c程序需要键入如下内容 cc inform.c 得到a.out的可执行文件,cc编译器会创造一个名为inform.o的目标文件,在链接器生成可执行文件后删除目标文件
2.LINUX
LINUX C编译器称为gcc
四.HelloWorld
#include
int main(void)
{
printf("Hello World");
return 0;
}
五.常用库
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
六.语法
1.变量声明
int a,b,c;
int a=0,b=0,c=0;
int a=1;
2.函数的声明
int a();
3.函数的实现
int a()
{
return 0;
}
4.常用的符号
*作为单元运算符时,是从某地址取值 例int *a=b; c = *a就是取出b的值. int *a就是指针标识符
&作为单元运算符时,就是引用运算符,用来取出对象的地址
5.简单的输入输出
scanf("%d",&a); //从键盘上输入数字,并存入a的地址中。
printf("%d",a);//打印出a,并且是int类型
sizeof可以查看数据类型,或对象所占的字节数
%x是十六进制
%0是八进制
6.字符串与数组
字符串以'\0'结尾
一般转换成数组的字符串会自动让'\0'占最后一位,如果用%s打印一个没有‘\0’字符串数组,那么可能会引发内存溢出,因为在遇到'\0'之前会一直在内存中读取直到遇到'\0'
7.常量
常量有两有定义方式一种是#define a='a' 另一种是 const int a='a' 常量是只读值,必须在声明时初始化
8.自定义类型
typedef int * P
typedef int (*SUM)(int,int);
9.指派运算符
(type)它将它后面的值 转换为由圆括号中的关键字所指定的数据类型 (float)9 将变为 float 9.0
10.结构
struct student {int a,int b} ; //声明一个变量 struct student s = {0,1}; s.a;
11.枚举
enum ee {a,b,c,d}; enum ee e for(e=a;e<=d;e++){printf("%d",e);}
12.生存周期
代码段是一段独立的内存区域
在代码段里的变量,将会替代全局变量发生作用,而且代码段里的变量,并不累加到其它作用域里,当代码段执行完全,代码段里声明的变量也将结束生命,除非是静态变量,静态变量的内存地址将保留,直到程序结束。
全局变量,可以在多个文件中共享
局部变量 可以在本文件中共享,如果是在代码段或函数的作用域中声明的,那么将只能在固定作用域起作用。
局部变量的作用域取决于它的位置。