文章目录
一、简单的C程序
第一个 C 语言程序示例,假设文件名为 first.c
#include <stdio.h> // 这里是注释
int main(void) // 一个简单的 C 程序
{
int num; // 定义一个名为 num 的整型变量
num = 1; // 给 num 变量赋值为 1
printf("I am a simple "); // 使用 printf() 函数输出内容
printf("computer.\n"); // 在行最后使用转义符 \n 来进行换行
printf("My favorite number is %d because it is first.\n", num); // 使用占位符 %d 进行变量的格式化输出
return 0;
}
使用 gcc 命令对程序进行编译
gcc first.c
会在原目录下生成一个 a.out 的文件,这个文件可以直接运行。
在 linux 系统下,输入以下指令来运行这个文件:
./a.out
运行程序输出的结果应该是下面这样的:
I am a simple computer.
My favorite number is 1 because it is first.
二、C 语言程序的基本语法
#include <stdio.h>
这一行是告诉编译器把 stdio.h 这个文件的内容包含在程序中,stdio.h 是 C 编译器软件包的标准部分,它提供键盘输入和屏幕输出的支持。在一些不需要输入输出的程序里面,可以不使用这个模块,例如汽车里面的一些控制程序。
C 程序里面包含一个或多个函数,函数之间还可以进行相互的嵌套。
main 函数是 C 语言的基本函数,如果只有个函数,我们一般使用 main 来进行命名。
函数前面的 int 表明函数返回一个整型值。后面的圆括号里面的 void 表示这个函数不带参数,这里的参数是形式参数,是一个变量。
函数的开头一行和最后一行是一对{ } ,被花括号括起来的是函数体。
int 声明后面变量是整型,变量的类型有很多种,在 C 语言中需要先声明变量的类型,才能进行赋值操作。 Python 中可以不声明变量的类型而直接进行赋值操作。
num = 1 ; 是赋值表达句,赋值用 = ,判断相等用 ==。
printf(""); 调用 printf() 这个函数来把内容输出到屏幕上。
\n 为转义字符,表示在这个位置输出一个换行符, \t 表示 Tab 键, \b 表示退格键(Backspace)。
最后一句里面的 %d 为格式化占位符,表示在这个位置输出一个变量,变量在语句的后面表示,这样可以很方便进行变量的输出。
return 0; 有返回值的 C 函数要有 return 语句,没有返回值的函数可以省略这个,但是最好养成在 main() 函数中保留 return 语句的习惯,在一些操作系统中它有实际的用途。
// 表示行注释,它后面的所有字符都会被编译器忽略。
/* 注释内容 */ 为块注释,如果要进行大段文字的注释,可以使用块注释。
三、提高程序可读性的技巧
1、使用有意义的文件名、函数名、变量名
如果实在没有办法只通过函数名或者变量名表达清楚它们的作用,就在后面加上注释。
2、合理使用注释
添加大量的注释虽然会在第一次编写程序时耗费一些时间,但是程序的后续维护会更加方便。
一般程序内的注释行数会占到总代码的一半左右。
3、使用空行分隔函数中概念上的的多个部分
空行在程序中也会被程序忽略,并且没有实际意义,但是通过使用空行可以把程序的各个部分分隔开,使程序更加容易阅读。
4、每条语句各占一行
这个听起来像是常识,不需要特别强调,但是还是会有人不按照这样的格式来写程序。
例如以下程序:
#include <stdio.h>
int main(void) { int four; four = 4;
printf(
"%d\n"
); return 0;}
这样的程序格式也会被编译器识别,不会报错,但是非常难以阅读。
更加易读的格式是每条语句写一行,注释如果比较短就直接写在这一行这后面,如果注释较长,就另起一行。
四、C 语言的进一步用法
声明多个变量
可以在程序开始同时声明多个变量,每行声明一个就可以了。
例如:
int name;
int age;
也可以这样写:
int name, age;
使用运算符
可以在变量赋值时使用运算符(加、减、乘、除等)。
例如:
int m, km;
m = 5;
km = m / 1000;
运算符的使用规则和数学中一样,也可以使用括号。
在一行中打印多个变量
这个也很简单,在前面使用多个占位符,然后在后面按顺序写上多个变量名称就可以了。
例如:
printf("There is %d m in %d km.\n", m, km);
五、多个函数
要在一个程序中使用多个函数,需要先定义函数名称和函数主体,然后调用它。
函数名称的定义一般放在最前面,函数主体的内容一般放在 main 函数的后面。
也可以在第二个函数里面调用第三个函数。
为了整齐,一般把定义函数名的语句都写在最前面,定义函数主体内容的语句写在 main 函数的后面。
当然,最好是加上注释,来说明这些函数的用途。
#include <stdio.h>
void num(void); // 定义函数名
void age(void); // 定义第三个函数名
int main(void)
{
num(); // 调用函数
}
void num(void) // 定义函数主体
{
printf("This is a test.\n")
age(); // 调用第三个函数
}
void age(void) // 定义第三个函数主体
{
printf("I'm 25 years old.\n");
}
六、程序 BUG
在编写程序的过程中,不可避免的会出现一些错误,有些错误很小,可能只是误用了全角的逗号,或者是后面使用变量名的使用打错了一个字母。
这些错误在编译的时候,编译器会报错,提醒你错误的位置,和可能的原因。我们只需要进行对应的修改以后再重新编译即可。
有些错误可能不是书写错误,编译器并不会报错,这就需要我们进行认真排查。
例如,写出来的句子不通顺,或者是语法格式不规范。
书写错误和语法格式不规范的问题,后期我们使用集成开发环境(IDE)以后,可以帮我们解决很多这方面的问题。
句子不通顺的问题,就需要我们自己多多留心了。
七、关键字和保留字符
关键字是每种语言内部使用的一些词汇,他们已经有了特定的用途,不能再用他们来定义变量名或者函数名等,这样操作会引起歧义,所以被程序禁止使用。
如:int, if, return 等。
C 语言的关键字目前共有32个
| 关键字 | 含义 |
|---|---|
| auto | 声明自动变量 |
| short | 声明短整型变量或函数 |
| int | 声明整型变量或函数 |
| long | 声明长整型变量或函数 |
| float | 声明浮点型变量或函数 |
| double | 声明双精度变量或函数 |
| char | 声明字符型变量或函数 |
| struct | 声明结构体变量或函数 |
| union | 声明共用数据类型 |
| enum | 声明枚举类型 |
| typedef | 用以给数据类型取别名 |
| const | 声明只读变量 |
| unsigned | 声明无符号类型变量或函数 |
| signed | 声明有符号类型变量或函数 |
| extern | 声明变量是在其他文件正声明 |
| register | 声明寄存器变量 |
| static | 声明静态变量 |
| volatile | 说明变量在程序执行中可被隐含地改变 |
| void | 声明函数无返回值或无参数,声明无类型指针 |
| if | 条件语句 |
| else | 条件语句否定分支(与 if 连用) |
| switch | 用于开关语句 |
| case | 开关语句分支 |
| for | 一种循环语句 |
| do | 循环语句的循环体 |
| while | 循环语句的循环条件 |
| goto | 无条件跳转语句 |
| continue | 结束当前循环,开始下一轮循环 |
| break | 跳出当前循环 |
| default | 开关语句中的“其他”分支 |
| sizeof | 计算数据类型长度 |
| return | 子程序返回语句(可以带参数,也可不带参数)循环条件 |
还有一些保留标示符,C 语言里面已经指定了他们的用途,我们也不能使用,包括一些以下划线 _ 开头的的标示符和标准库函数名。
例如:
_Bool
_Complex
_Noreturn
八、练习
在初学时,章节内的每个例题和后面的练习题都要亲手敲一遍,熟悉 C 语言程序的基本结构,以及避免一些可能的语法问题。
只有亲自敲代码的时候出现了错误,并找出错误的地方和原因,那么以后就可以尽量避免再出现这种错误,或者再出现这种错误的时候就可以快速的找到问题,并解决它。
还是一句话:多练习,多思考。
本文详细介绍了C语言的基础知识,包括简单的C程序编写、基本语法、程序可读性提升技巧、C语言的进一步用法、多个函数的使用、程序错误排查、关键字与保留字符的了解,以及编程练习的重要性。通过实例解析,帮助读者掌握C语言的核心概念和编程规范。
1095

被折叠的 条评论
为什么被折叠?



