1. main函数

每个C语言不管有多少行代码,都是从main函数开始执行的。main函数是程序的入口,main函数也被叫做主函数。main前面的int表示main函数执行结束的时候返回一个整数类型的值,所以main函数最后写return 0;(在C语言中默认返回0表示正常,返回非0表示异常),刚好前后呼应。

(1)main函数是程序的入口;

(2)main函数有且只有一个;

(3)即使一个项目中有多个.c文件,也只能有一个main函数,因为程序的入口有且只有一个。

常见错误总结:

(1)main被写成了mian;

(2)main后面的 () 漏掉了;

(3)代码中不能使用中文符号,如分号和括号等;

(4)一条语句结束后应该有分号。

2. printf函数

printf是一个库函数,实现了在屏幕上打印信息,功能是在标准输出设备(一般指屏幕)打印信息,只要把想要打印的信息放在双引号中传递给printf函数就可以打印。

printf("%d\n",100);   //按十进制打印整数
printf("%f\n",3.14);   //打印小数
printf("%c\n",'X');   //打印字符

3. 库函数

为了不再重复实现常见的代码,C语言标准规定了一组函数,这些函数再由编译器厂商根据标准进行实现,供给程序员使用,这些函数组成了函数库,称作标准库,这些函数称作库函数。一个系列的库函数一般会被声明在同一个头文件中,所以库函数的使用要包含对应的头文件。

#include <stdio.h>
//std: stdandard
//i:input
//o:output

4. 关键字

C语言中有一批保留名字的符号,比如:int、if、return等,这些字符被称为保留字或关键字。

注意:

(1)关键字都有特殊的意义,是保留给C语言使用的;

(2)程序员在创建标识符的时候不能和关键字重复;

(3)关键字也是不能自己创建的;

(4)常用的关键字有32个。

5. 字符和ASCII编码

在键盘上可以敲出一些符号,如@、#等,在C语言中这些符号称为字符,C语言中字符是用单引号括起来的,如’a’、‘X’等。计算机中所有数据以二进制的形式储存,每个人给这些字符编一个二进制序列叫做编码,为了防止混乱,美国国家标准协会出台了一个标准ASCII编码,C语言中的字符就遵循了标准ASCII编码的方式。

注意:

不需要记住ASCII码表中的所有数字,在使用的时候进行查询即可,但要记住一些特殊数据:

(1)字符A-Z的ASCII码值为65-90;

(2)字符a-z的ASCII码值为97-122;

(3)对应的大小写字符(如A和a)相差32;

(4)字符0-9的ASCII码值为48-57;

(5)换行\n的ASCII码值为10;

(6)ASCII码值从0-31为不可打印字符,不可打印在屏幕上观察。

误区:

数据在内存里是二进制位,十进制只是printf根据格式说明符对这些位做的一种文本表示。“存储方式”和“显示方式”是两件事。

6. 字符串和\0

一串字符被称为字符串,字符用单引号,字符串用双引号。如:“gdfgheiu"就是一个字符串。用%s来打印字符串。

注意:

字符串的末尾隐藏着一个\0字符,这个\0字符是字符串结束的标志。

printf("abcd");
printf("abcd\0");
printf("abcd\0efg");
printf("%s","abcd");
printf("%s","abcd\0");
printf("%s","abcd\0efg");
//这6行代码的效果是一样的

7. 转义字符

转义字符顾名思义:转变原来的意思的字符。

? :在书写连续多个问号时,防止他们被解析成三字母词,已经无法在新的编译器上验证了

' :表示字符常量’

\ :用于表示一个反斜杠,防止它被解释为转义序列符

\a :是终端出现警报声或闪烁,或者两者同时发生

\b :退格键,光标回退一个字符,但不删除字符

\n :换行符,换行

\r :回车符,光标移动到这一行的开头

\t :制表符,光标移动到下一个水平制表位,通常为4/8的倍数

\ddd :d d d表示三个八进制数字,\后面最多三个d,例如:\130表示字符X

\xdd :d d表示两个十六进制的数字,例如:\x30表示字符0

printf("%c",'Q');
printf("%c",'\x51');
printf("%c",'\121');
printf("%c",81);
//这些都表示字符Q

8. 语句和语句分类

C语言的代码是由一条条的语句构成的,C语言中的语句可以分为以下五类:

(1)空语句:空语句是最简单的,一个分号就是一个空语句。空语句出现的地方一般是:需要一条语句,但这条语句不需要做任何事,此时便可以写一个空语句。

#include <stdio.h>
int main()
{
    ;   //这便是一个空语句
    return 0;
 }

(2)表达式语句:表达式语句就是在表达式的后面加上分号。

#include <stdio.h>
int main()
{
    int a = 20;
    int b =0;
    b = a + 5;  //这便是表达式语句
    return 0;
 }

(3)函数调用语句:调用函数的时候,后面加上分号。

#include <stdio.h>
int main()
{
    printf("hello");   //这便是一个函数调用语句
    return 0;
 }

(4)复合语句:复合语句其实就是代码块,成对的大括号里的代码就构成一个代码块。

(5)控制语句:控制语句用于控制程序的执行流程,以实现程序的各种结构(C语言支持三种结构:顺序结构、循环结构、选择结构),它们由特定的语句定义符组成。C语言有九种控制语句,可分成以下三类:

a.条件判断语句(也叫分支语句):if语句、switch语句;

b.循环执行语句:do while语句、while语句、for语句;

c.转向语句:break语句、goto语句、continue语句、return语句。

9. 注释

注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。注释是给程序员自己或者其他程序员看的。好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。当然,不写注释可能会让后期阅读代码的人抓狂。写注释在程度上反应了程序作者的素质,建议大家写必要的注释。(在未来找工作的时候,写代码时留下必要的注释也会给面试官留下更好的印象。)

C 语言的注释有两种表示方法:

(1) /**/ 形式

注释放在 /和/ 之间,一次可以注释多行,但是不支持嵌套注释,这是C语言早期的注释方式。

/*
第一行注释
第二行注释
第三行注释
......
*/

这种注释可以插在行内。

int fopen(char* s /* file name */, int mode);

上面示例中,/* file name */ 用来对函数参数进行说明,跟在它后面的代码依然会有效执行。这种注释一定不能忘记写结束符号 */,否则很容易导致错误。

(2) // 形式

将注释放在双斜杠 // 后面,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。这是 C99 标准新增的语法。

printf("hello");
//打印hello

不管是哪一种注释,都不能放在双引号里面。双引号里面的注释符号会被解释为普通符号,成为字符串的一部分,从而失去注释作用。

printf("// hello /* world */ ");

上面示例中,双引号里面的注释符号,都会被视作普通字符,没有注释作用。

注意

编译时,注释会被替换成一个空格,所以 min/这里是注释/Value,会变成 min Value,而不是 minValue。