预览
在这节我准备了C的一些基本特性。C的特性很少,并且语法很简单。但这不意味着它简单。所有的东西都藏在表面之下。因此我们会很快地浏览它的特性和语法,然后开始看看深入地东西。
这节的目的是让大家都有同样地背景知识。如果你是刚接触C的应该多看一下这节,要是有过些使用C的经验那么你只需快速浏览一下就好。
程序
C程序只需要考虑函数定义和结构体的定义。
源文件只是一个函数和类型的列表。这些函数可以调用任何其它的函数或者它自己,也可以使用所有声明的数据类型或者内建的类型。
也可以调用其它库的函数,或者使用其中的数据类型,这就是C复杂的原因。
看到到得,C程序的执行总是从main
函数开始的。从这里开始调用更多地函数,并完成我们想要的其它表现。
变量
在C语言中函数是用来操作变量的。这些变量就是我们命名后的数据。
C中每个变量都有明确地类型。这些类型是我们自己声明或者语言内建的。通过类型加名字以及可选的初始值来声明新变量。C中所有的语句结束都采用分号。
创建一个叫count的int型变量是这样的...
int count;
或者声明并赋初值...
int count = 10;
下面是一些内建类型的描述和例子。
关键字 | 描述 | 例子 |
---|---|---|
void |
空类型 | |
char |
单个字母 | char last_initial = 'H' ; |
int |
整型 | int age = 23; |
long |
长整形(可以存更大数值的整数) | long age_of_universe = 13798000000; |
float |
浮点型 | float liters_per_pint=0.568f; |
double |
double型比float存更精确地小数 | double speed_of_swallow=0.01072896; |
函数声明
函数是一个操作变量的操作,并且可以选择控制程序的状态。它接受一些变量作为输入并返回单个变量作为输出。
函数声明方式是先写返回值类型,函数名,然后再括号中写上函数接受的参数列表,参数间用逗号隔开。函数内容是在大括号中写着,包括所有的语句和函数调用.return
是让函数结束并返回一个变量作为输出。
比如下面这个例子是就是接受俩个int
型参数并把它们相加。
int add_together(int x, int y){
int result = x + y;
return result;
}
通过名字加参数调用函数,比如下面就是调用上面这个函数的例子:
int added = add_together(10, 18);
结构体声明
结构体是用来声明新类型的。结构体是多种类型变量打包在一起。
因此可以用结构体来呈现更多复杂的数据类型。比如可以建一个叫point
的结构体表示二维世界的点,它包含两个float
类型的值分别叫x
y
。可以像下面这样声明。
typedef struct{
float x;
float y;
}point;
结构体的声明应该在使用前。它和内建的类型没有区别,使用起来也是一样的。通过.
访问它的内部成员,像下面这样:
point p;
p.x = 1.0;
p.y = 10.0;
float length = sqrt(p.x*p.x + p.y*p.y);
指针
指针是普通类型的变化,其中类型名称跟在星号后面。比如可以像int*
声明一个整型指针。我们已经见过char** argv
这样的指针类型了。这是一个指向字符型指针的指针。
指针和其它类型变量完全不同。这是C语言最难得一部分,我们会在后面的章节中详细介绍它的更多细节。现在我们不需要知道它的细节,只要知道它的存在就好了,不要被它吓跑了。
字符串(Strings)
在C语言中string是由char*
指针表示的。指针指向的是一串字符(char),结尾的字符是一个叫null
的字符。字符串在C中是比较复杂也是比较重要的一个部分,下章中我们会学习怎么高效的使用它。字符串可以通过在双引号中添加字符来声明。现在记着如果你看到char*
,那么你可以把它看做string。
条件
条件表达式让代码可以在满足特定条件下才运行。
可以使用if
表达式让代码在满足特定条件时运行。if
加括号中的条件,再加一个大括号包裹着要执行的语句。if
表达式可以加可选的else
表达式。else
后面的语句在不满足if
条件时执行。
在条件判断是可以用||
或 &&
与 这样的逻辑操作符连接多个条件。
在条件表达式中非0
表示真。这点一定要记住。
如果要判断x
是比10
大,比100
小,可以像下面这样:
if (x >10 && x < 100){
puts("x is greater than 10 and less than 100!")
}else{
puts("x is greater than 99 or less than 11!")
}
循环
循环允许代码可以在某些条件为假之前一直重复运行。
在C中有两种主要的循环。第一种是while
循环。这种循环在指定条件为假之前一直重复运行,比如下面这个例子是从10数到1得循环:
int i = 10;
while (i > 0) {
puts("Loop Iteration");
i = i - 1;
}
第二种循环是for
。除了条件外,这种循环需要用分号隔开的三个表达式。它们分别是初始值,条件,增量。初始值是在循环开始前执行的。条件判断是每次循环都会检测的一但结果为假就结束循。增量是在每次循环结束后执行的。这种循环往往用来执行比while
更复杂的循环。
比如说一个从0数到9的循环可以这样写。i++
表示给i的值加1。
for (int 1 = 0; i<10, i++){
puts("Loop Iteration");
}