C - 基本语法



C 编程 中,“语法”指的是为程序员编写特定应用程序源代码而制定的规则集。虽然 C 语言中的每个关键字都推荐使用特定的语法,但在开发 C 程序时,仍需要遵循某些通用规则。

一个典型的 C 程序源代码包含以下元素:

/*Hello World program*/ // Comments

#include <stdio.h>   // Header File
int a=10;   // Global declarations

// The main function
int main() {		
   char message[] = "Hello World";  // Local variable
   printf("%s", message);
   return 0;
}

C 语言中的词法单元

C 程序由各种 词法单元 组成,一个词法单元可以是关键字、标识符、常量、字符串字面量或符号。例如,以下 C 语句包含五个词法单元:

printf("Hello, World! \n");

各个词法单元是:

printf
(
   "Hello, World! \n"
);

C 编译器 会识别词法单元是关键字、标识符、注释、字面量、运算符,还是任何其他已识别的特殊符号。这个过程由编译过程的第一阶段中的词法分析器完成。

C 语言中的标识符

C 标识符 是用于标识变量、函数或任何其他用户定义项的名称。标识符以字母 A 到 Z、a 到 z 或下划线 '_' 开头,后跟零个或多个字母、下划线和数字 (0 到 9)。

C 语言规定了形成变量、函数或其他编程元素名称的某些规则。它们不是关键字。标识符必须以字母或下划线开头,并且除了字母、数字和下划线之外,不能包含任何其他字符。

C 语言不允许在标识符中使用诸如 @、$ 和 % 等标点符号。C 语言是区分大小写的编程语言。因此,Manpower 和 manpower 在 C 语言中是两个不同的标识符。以下是一些可接受的标识符示例:

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

C 语言中的关键字

C 语言最重要的部分是它的关键字。关键字 是具有预定义含义和规定的使用语法的保留字。在 ANSI C 中,所有关键字都使用小写字母。程序员需要选择正确的关键字来构建问题的解决方案。学习编程基本上就是学习正确使用关键字。

以下列表显示了 C 语言中的保留字。这些保留字不能用作常量、变量或任何其他标识符名称。

auto else long switch
break enum register typedef
case extern return union
char float short unsigned
const for signed void
continue goto sizeof volatile
default if static while
do int struct _Packed
double

除了本章中解释的基本语法之外,C 语言中的每个关键字都具有明确定义的语法。每个关键字的用法将在后续章节中解释。

C 语言中的分号

在 C 程序中,分号是语句终止符。也就是说,每个语句都必须以分号结尾。它表示一个逻辑实体的结束。

以下是两个不同的语句:

printf("Hello, World! \n");
return 0;

由于分号“;”只是 C 语句的定界符,因此 C 程序中的一行物理行中可能有多个语句。同样,单个语句也可能跨越多行源代码。

以下行在 C 语言中完全有效。在一行中,有多个语句:

int a=10; if (a>=50) printf("pass"); else printf("fail");

即使语句跨越多行,以下代码也是有效的:

if
   (a>=50)
   printf("pass");
else printf("fail");

C 语言中的注释

注释 就像 C 程序中的辅助文本,编译器会忽略它们。它们以 /* 开头,以 */ 结尾,如下所示:

/* my first program in C */

注释中不能嵌套注释,并且它们不会出现在字符串或字符字面量中。

源代码

C 程序是一个文本文件,包含一系列语句。该文件必须以 .c 为扩展名。C 编译器只识别 .c 文件进行编译。虽然字符串字面量可以包含任何 Unicode 字符,但 C 语言的关键字和其他标识符只使用英文字母。

main() 函数

每个 C 程序都必须有一个(且只有一个)main() 函数,编译器从这里开始执行代码。但是,main() 函数不必位于 .c 文件代码的开头。C 程序中可以有任意数量的函数。如果一个函数在其定义之前调用任何其他函数,则应该对其进行前向声明。

头文件

除了关键字之外,C 程序通常还需要从头文件库中调用预定义函数。所需的 头文件使用 #include 预处理器指令 导入。所有 #include 语句都必须位于源代码的开头。

变量声明

C 语言是一种静态类型语言。它要求在使用程序中出现的变量之前对其进行声明。变量可以在全局范围内(即在任何函数之外)或在函数的作用域内局部声明。变量只能存储其声明类型的变量。这是 C 语言的重要规则之一。

C 程序中的语句

语句是程序的基本组成部分。默认情况下,`main()` 函数中的语句按从上到下的顺序执行。顺序由条件语句循环结构控制。作为基本语法规则,每个语句结尾必须有分号 (;)。

C程序中的空白字符

编译源代码时,编译器会忽略空白字符。在C语言中,空白字符是指空格、制表符、换行符和注释。虽然可以使用它们来提高代码的可读性,但它们对编译器几乎没有意义(除非它们是字符串字面量的一部分,出现在双引号内)。仅包含空白字符(可能还有注释)的行被称为空行,C编译器会完全忽略它。

空白字符将语句的一个部分与另一个部分隔开,并使编译器能够识别语句中一个元素(例如 int)的结束位置和下一个元素的开始位置。因此,在以下语句中:

int age;

为了使编译器能够区分 `int` 和 `age`,`int` 和 `age` 之间必须至少有一个空白字符(通常是一个空格)。另一方面,在以下语句中:

fruit = apples + oranges;   // get the total fruit

“fruit”和“=”之间,或“=”和“apples”之间不需要空白字符,尽管您可以随意添加一些以提高可读性。

C语言中的复合语句

通常,您需要将一个连贯的语句块定义为单个编程逻辑单元。例如,如果某个逻辑表达式为真,您可能希望执行多个语句,或者在循环块中执行多个语句。同样,用户定义的函数可能包含多个语句。在这种情况下,语句被组合在一起形成复合语句。C语言使用花括号进行这种分组。

{
   Statement1;
   Statement2;
   . . . 
   . . . 
}

在以下代码中,if 和 else 部分各自包含一个语句块。

int marks = 40;

if (marks<50) {
   printf("Result: Fail\n");
   printf ("Better Luck next time");
}
else {
   printf("Result: Pass\n");
   printf("Congratulations");
}

花括号也用于函数定义

float area_of_square(float side) {
   float area = pow(side,2);
   return area;
}

使用结构体联合体或枚举定义自定义类型也需要用花括号将多个语句组合在一起。

struct student {   	
   char name[20];   	
   int marks, age;   
};

花括号还可以声明数组,如下所示:

int marks[ ]={50,56,76,67,43};  
广告
© . All rights reserved.