C语言的介绍:
C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构化 程序设计语言之一。
发展史:
C语言的祖先是BCPL语言。1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogramming Language)语言。
1970年,美国贝尔实验室的 Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。
在1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
为了使UNIX操作系统推广,1977年Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。1990年,国际标准化组织ISO(International Organization for Standards)接受了89 ANSI C 为I SO C 的标准(ISO9899-1990)。
1994年,ISO修订了C语言的标准。
1995年,ISO对C90做了一些修订,即“1995基准增补1(ISO/IEC/9899/AMD1:1995)”。
1999年,ISO有对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该的需要,增加了一些功能,尤其是对C++中的一些功能,命名为ISO/IEC9899:1999。
2001年和2004年先后进行了两次技术修正。目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则有略有差别。
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
语言特点:
C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。
1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
2. C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3. C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。
第一个C语言程序:
数据类型
每个类型的大小
变量、常量
生活中的有些值是不变的(比如圆周率、性别、身份证号码、血型等)
有些只是可变的(比如年龄、体重、薪资等)
不变的值称为常量,改变的值称为变量。
变量的命名
1.只能由字母(包括大写小写)、数字和下划线(_)组成。
2.不能数字开头。
3.长度不超过63个字符。
4.变量名中区分大小写的。
5.变量名中不能使用关键字。
变量的分类
局部变量
全局变量
#include<stdio.h> int global = 2019;//全局变量 int main() { int local = 2018;//局部变量 int global = 2020;//局部变量 printf("global=%d\n", global); return 0; }
变量的使用
#include <stdio.h> int main() { int numl = 0; int num2 = 0; int sum = 0; printf("输入两个操作数:"); scanf("%d %d", &num1, &num2); sum = numl + num2; printf("sum = %d\n", sum); return 0; }
4.4 变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总有效 可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2.全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2.全局变量的生命周期是:整个程序的生命周期。
常量
C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:
字面常量
const 修饰的常变量
#define 定乂的标识符常量
枚举常量
#include<stdio.h> //举例 enum sex { MALE, FEMALE, SECRET }; //括号中的MALE,FEMALE,SECRETE是枚举常量 int main() { //字面常量演示 3.14;//字面常量 1000;//字面常量 //const修饰的常变量 const float pai = 3.14f; //这里的pai是const修饰的常变量 pai = 5.14;//是不能直接修饰的! //#define的标识符常量 演示 #define MAX 100 printf("max = %d\n", MAX); // 枚举常量演示 printf("%d\n", MALE); printf("%d\n", FEMALE); printf("%d\n", SECRET); return 0; }
注:
上面例子上的pai 被称为const 修饰的常变量,const 修饰的常变量在C语言中只是在语法层面限制了
变量 pai 不能直接被改变,但是pai 本质上还是一个变量的,所以叫常变量。
字符串+转义字符+注释
1.字符串
"hello world.\n"
"hello world.\n"
这种由双引号 (Double Quote)引1起来的一串字符称为字符串字面值 (String Literal),或者简称字符串。
注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\。 是结束标志,不算作字符串
#include <stdio.h> //下面代码,打印结果是什么?为什么?(突出”\0’的重要性) int main() char arr1[] = "bit"; char arr2[] = {'b','i','t'}; char arr3[] = {'b','i','t'}; printf("%s\n", arr1); printf("%s\n", arr2); printf("%s\n", arr3); return 0; }
转义字符
假如我们要在屏幕上打印一个目录:c:\code\test.c
我们该如何写代码?
#include <stdio.h> int main() printf("c: \code\test.c\n"); return 0; }
实际上程序运行的结果是这样的:
#include <stdio.h> int main() { //问题1:在屏幕上打印一个单引号',怎么做? //问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做? printf("%c\n", '\''); printf("%s\n", "\""); return 0; }
注释
1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
#include <stdio.h> int Add(int x, int y) { return x+y; } /*C语言风格注释 int Sub(int x, int y) { return x-y; } */ int main() { //C++注释风格 //int a = 10; //调用Add函数,完成加法 printf("%d\n", Add(1, 2)); return 0; }
注释有两种风格:
C语言风格的注释/*xxxxxx*/
缺陷:不能嵌套注释
C++风格的注释//xxxxxxxx
可以注释一行也可以注释多行。