C语言程序设计–基础语法

上一章,初识C语言



前言

C语言是一门面向函数的语言,函数是C语言的基础。
纸上得来终觉浅,绝知此事要躬行。读者在看完本章后可尝试编写一两个简单的程序,体会一下编程乐趣。


一、C语言基础语法

//first.c
#include <stdio.h>

int main() {
	int num;
	num=1
    printf("Hello, World!\n");
    return 0;
}

1.声明

声明是C语言最重要的特性之一,变量或函数在使用前都需要先声明。
在上方first.c程序中,int num表示声明了一个int类型变量名为num的变量,编译器在编译时使用这些信息为num变量在内存中分配存储空间。分号作为一段语句的结束,在C语言中是大部分语句和声明的一部分。
最初的C语言要求变量声明必须在代码块的顶部,其他语句不能在任何声明之前。在C99和C11之后,其遵循C++的惯例,声明可放在块中的任何位置。尽管如此使用变量之前也一定要先声明。

1.数据类型

C语言可处理多种类型的数据,如整数,浮点数和字符。把变量声明为具体的整形或字符类型,计算机才能正确的存储,读取和解释数据。

2.命名规范

给变量命名时要使用有意义懂得典变量名和标识符,如果变量名无法清楚地表示自身的用途,可在注释中进一步说明。这是一种良好的编程习惯和编程技巧。 对于变量名你可以使用大小写字母,数字和下划线 " - " 来命名。需要注意的是命名的第一个字符必须是字符或者下滑线,不能是数字。
C语言的名称区分大小写,因此Dog,dog,DOG这是三个命名。

有效命名 无效命名
taxRatio &A}
car1 2cat
_dogs dog home
_dogs dog-home’s

操作系统和C库中常用一个或两个下划线字符开始的标识符,因此尽量避免在自己的程序中使用这种方式(可能会导致名称冲突)。

3.为何要命名

1.将所有变量放在一处,方便查找和理解程序用途。将变量名设置为有意义的(如,taxratio,carnum等),可让程序可读性更高。
2.声明变量会促使你在编写程序前做一些计划,即程序初始化需要获得那些信息,程序需要哪种数据类型。
3.声明变量可避免因错误的变量名而导致的错误。(如,声明为taxratio,使用时taxrato)这种错误在有的语言会直接声明一个新的变量。这种问题你可能要花费很久才能查到原因。
4.若未先声明,C程序将无法通过编译。

2.关键字和保留标识符

关键字是C语言词汇,编程时不能使用他们作为标识符(如变量名函数名等)。许多关键字用于指定不同数据类型,还有用于控制程序中语句执行顺序。下表为关键字表。加粗表示C90标准新增关键字,斜体表示C99标准新增关键字,粗斜体表示C11标准新增关键字。

auto extern short while
break float signed _Alignas
case for sizeof _Alignof
char goto static _Atomic
const if struct _Bool
continue inline switch _Complex
defalt int typedef _Generic
do long union _Imaginary
double register unsigned _Noreturn
else restrict void _Static_assert
enum return volatile _Thread_local

尽管不同C版本标识符有细微差别,尽量不要使用任意版本 保留标识符,避免语法错误。

3.注释

在写程序时,添加合适的注释能让他人(包括自己)更容易明白你所写的程序。C语言注释的好处在于可将注释放在任意位置,甚至和要解释的内容在同一行。较长的注释可单独放在一行或多行。
1.多行注释 : /* */
2.单行注释(C99之后的版本)://

/*
在此间的内容
是多行注释
*/

/*注释1*/

//此处是注释
int num;//这种注释只能写一行
num = 1;

4.#included指令和头文件

#include<stdio.h>的作用相当于把stdio.h文件中的所有内容都输入到该行 位置。
#include是一条C预处理指令,即在编译前对源代码做一些准备工作。

所有的C编译器都提供stdio.h文件,文件包含了供编译器使用的输入输出函数信息,该文件是标准输入/输出头文件。通常在C程序顶部的信息集合称为头文件。

头文件也可声明一些常量,或者指明函数名以及如何使用它们,但是函数的实际代码在一个预编译代码的库文件中。

注:并非所有的程序都需要I/O(输入输出)包

5.main()函数

无论main()在程序文件处于哪个位置,所有的C程序一定从main()函数开始执行。函数是C程序的基本模块。惯例是将main()放在开头,因为其提供了程序的基本框架。

注:此处很容易因为打字太快写成mian(),这种写错程序报错信息基本看不出来

二、调试程序

一个简单的C程序代码如下:

//tow.c  一个有错误的程序
#include <stdio.h>

int main(void) (
	int n1,int n2,int n3;
	num=1;
	n1=2;
	n2= n1*n1
	n3 = n2*n2;
    printf("n1 = %d,n1^2 = %d,n1^3 = %d\n ",n1,n2,n3);
    return 0;
)

1.语法错误

语法错误是指违反了组成语句或程序的规则。
如上,存在多处语法错误。编程时应遵循C语言的规则。
函数体需要用{}包含,上述程序使用了()。

int main(){

}

变量声明应当为

int n1, n2,, n3
//或者如下
int n1;
int n2;
int n3;

编译前先看是否有明显错误。使用编译器时编译器发现错误会报告错误信息,并指出每一处错误性质和具体位置。

2.语义错误

语义错误是指含义错误。
n3表示n1的三次方,而代码中表现的为四次方,虽然编译器编译时不会报错,但这和你程序设计初衷相违背。

这种错误往往需要一步一步查看程序的执行情况,跟踪程序的执行步骤并查看相关数据。


总结

C语言程序是由一个或多个C函数组成。每个C程序都必须包含一个main函数,这是C程序的起点。函数由函数头和后面的花括号{}组成,,花括号中包含声明,语句组成的函数头.C语言大部分语句都以分号结尾。

一门语言的语法是一套规则,用于管理语言中各种有效语句组合在一起的方式。语句的语义是语句想表达的意思。编译器可检查出语法错误但无法检测出语义错误。检查语义错误需要跟踪程序运行状态,看每一步执行完之后变量的值。

[1]:参考自《C Primer Plus(第6版)中文版》

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐