文章目录
前言
本系列是我从零开始学习C语言的笔记。作为一名编程学习者,我希望把自己的学习过程系统地整理下来,既方便自己回顾,也希望能给给同样在入门阶段的同学提供一点参考。
本篇是系列的开篇,将梳理C语言入门阶段的基础概念。
由于是个人学习笔记,内容难免有理解不到位的地方,欢迎大家在评论区交流指正,共同进步。
1.C语言是什么?
人与人交流使用的是自然语言,比如汉语、英语;人与计算机交流,就需要使用计算机语言,C语言就是众多计算机语言中的一种。
2.编译和链接
C语言是一门编译型计算机语言,代码必须经过编译器的编译和链接器的链接生成二进制的可执行程序才能执行。
C语言代码存放在.c为后缀的文件中,称为源文件,一个工程可由多个源文件组成;
每个源文件经过编译器处理生成对应的目标文件(.obj为后缀的文件);
多个目标文件和库文件经过链接器处理生成对应的可执行文件。
3.第一个C语言程序
#include<stdio.h>
int main()
{
printf("HelloWorld");
return 0;
}
注意:
- main不要写成mian
- 代码中不能有中文符号
- 一条语句结束后,有分号
4.main函数
main函数也被叫做主函数,是程序的入口,一个程序中有且仅有一个main函数。main函数前面的int表示函数执行结束的时候返回一个整型类型的值,与main函数中最后的return 0相呼应。
5.printf函数和库函数
上面的代码使用了printf函数,它的功能是在屏幕上打印信息,上面的代码实现了字符串的打印,将字符串放进双引号中并传递给printf函数即可打印。
printf函数也可以打印其他类型的数据,比如:
printf("%d",3);//打印整形
printf("%c",'w');//打印字符
%d和%c是占位符,会被后面的值替换。
printf是一个库函数。
库函数是语言自带的、已经写好的、能直接调用的函数。这些函数组成了一个库函数,被称为标准库。想要使用库函数需要包含头文件,比如想要使用printf函数,就需要包含stdio.h这个头文件,具体的方法是:
#include<stdio.h>
6.关键字
C语言中有一批被赋予特殊含义,用于构建语法规则的保留字,也称为关键字。
- 自己创建的标识符不能和关键字重复
- 不能自己创建关键字
- C语言是区分大小写的,比如
int不能写成Int
C语言的32个关键字如下
| 关键字 | 作用说明 |
|---|---|
char | 字符型变量 |
int | 整型变量 |
short | 短整型变量 |
long | 长整型变量 |
float | 单精度浮点型(小数) |
double | 双精度浮点型(精度更高) |
void | 无类型(函数无返回值或无参数) |
signed | 有符号类型(可存正负值) |
unsigned | 无符号类型(只能存非负数) |
const | 常量修饰,变量值不可修改 |
volatile | 告诉编译器变量可能被意外修改,不做优化 |
static | 静态修饰,改变变量/函数的作用域和生命周期 |
extern | 声明外部变量/函数 |
register | 建议将变量存到寄存器(现代编译器优化能力很强,通常不需要手动使用) |
if/else | 条件判断 |
switch/case/default | 多分支选择 |
for | 循环结构 |
while | 循环结构 |
do | 循环结构(先执行一次再判断) |
break | 跳出当前循环或switch |
continue | 跳过本次循环,进入下一次循环 |
return | 函数返回,结束当前函数 |
goto | 无条件跳转到指定标签 |
auto | 自动变量(局部变量属性,几乎不用写) |
typedef | 给类型起别名,简化复杂类型名 |
struct | 定义结构体(组合不同类型的数据) |
union | 定义共同体(同一内存空间存不同类型数据) |
enum | 定义枚举类型(一组有名字的常量) |
sizeof | 计算变量/类型占用的内存大小 |
注:在C99标准中加入了inilne、restrict、_Bool、_Complex、_Imaginary等关键字,不过比较常用的还是上面32个。
7.字符和ASCII编码
在C语言中,字符就是我们平时用的单个文字符号,比如a、B、0、5、@、#
这些字符在代码中要用单引号括起来,比如’a’、‘5’。
计算机中所有的数据都是由二进制的形式储存的,给每个常用字符编一个二进制序列,称为编码,C语言遵循ASCII编码。

单个字符的打印可以用%c来指定格式,
printf('%c',Q);和printf('%c',81);的效果是一样的,都会打印出字符Q。
8.字符串和\0
使用双引号括起来的一串字符被称为字符串,比如:“abc”。
字符串的打印格式可以使用%s来指定:
printf("%s","abc");
也可以直接打印:
printf("abc");
字符串的末尾隐藏放着一个\0,是字符串结束的标志。只要是双引号写的字符串,末尾一定自带\0,不用手动加。
字符串"abc"在内存里存放的是:
a b c \0
一共占4个位置
9.转义字符
字符中有一组特殊的字符是转义字符,作用是改变原本字符的含义。
常用转义字符如下:
\?:在书写连续多个问号时使用,防止他们被解析成三字母词\0:结束字符串\n:换行符\':用于表示字符常量’\":用于表示一个字符串内部的双引号\\:表示一个反斜杠,防止它被解释成一个转义序列符\a:警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生\b:退格键,光标回退⼀个字符,但不删除字符\f:换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v\r:回车符,光标移到同一行的开头\t:水平制表符,光标移到下一个水平制表位,相当于按下键盘Tap键\v:垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列\ddd:d d d表示1~3个八进制的数字。如:\130表示字符Xxdd:d d表示1~2个十六进制的数字。如:\x30表示字符0
10.语句和语句分类
C语言的代码是由一条一条的语句构成的,C语言的语句可分为以下5类:
- 空语句
- 表达式语句
- 函数调用语句
- 复合语句
- 控制语句
10.1 空语句
只有一个分号,什么都不执行,占位使用
#include<stdio.h>
int main()
{
;//空语句
return 0;
}
10.2 表达式语句
表达式后面加上分号
#include<stdio.h>
int main()
{
int a = 10;
int b = 5;
b = a;//表达式语句
return 0;
}
10.3 函数调用语句
函数调用的时候,也会加上分号
#include<stdio.h>
int Add(int x,int y)
{
return x + y;
}
int main()
{
int n = Add(3,5);//函数调用语句
printf("%d",n);//函数调用语句
}
10.4 复合语句
大括号{ }包裹起来的一堆代码,整体看成一条语句,也叫代码块
#include<stdio.h>
int main()
{
int i = 0;
int arr[10] = {0};
for(i = 0;1 < 10;i++)//for循环的循环体的大括号中的就是复合语句
{
arr[i] = i;
printf("%d",arr[i]);
}
}
10.5 控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选
择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
- 条件判断语句也叫分支语句:if语句,switch语句
- 循环执行语句:for语句,while语句,do while语句
- 转向语句:break语句,continue语句,goto语句,return语句
11.注释
注释是对代码的解释,编译器会忽略注释,编译时,注释会被替换成一个空格。
C语言的注释有两种表示方法。
11.1 /* */的形式
第一种方法是将注释放在/*...*/之间,内部可以分行。
/* 这是注释 */
/*
这是注释
这还是注释
*/
这种注释可以插在行内。
需要注意的是,这种注释方法不支持嵌套注释,/*开始注释后,遇到第一个*/注释就结束了。
11.2 //的形式
第二种方法是将注释放在//后面,从//开始到行尾都属于注释。这种方法只能注释单行,可以放在行首,也可以放在行尾。
//这是注释
int n = 0;//这也是注释
双引号里面的注释符号会被视为普通符号,失去注释作用。例如:
printf("/*HelloWorld*/");
上面代码的注释符号在双引号里,就失去了注释作用。
总结
本篇我们梳理了C语言入门阶段的常见概念,从C语言的基础认知到第一个C语言程序,再到关键字、字符串等基础语法,完成了C语言入门的第一步,后续我们将继续学习数据类型与变量的相关内容。
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2601_96015117/article/details/160888996



