【C语言】概念总览

C语言是什么?

人与人交流用自然语言,人与计算机交流用计算机语言,人通过计算机语言编写程序,给计算机下达指令,让计算机工作。

C语言是众多计算机语言的一种,C++/Python/Java也都是计算机语言。

C的历史

C语言最初是作为Unix系统的开发工具而发明的。在1969年,贝尔实验室的肯.汤普森与丹尼斯里奇共同开发了Unix系统,该系统本身是用汇编语言写的,太复杂,为了更容易移植到其他计算机,发明了B语言,但B语言也不好用,于是在1972年,丹尼斯.里奇和布莱恩.克林汉B的基础上发明了C语言,1973年Unix被C语言重写,C语言慢慢流行起来,有很多人对C语言进行扩充,一定程度上导致一些地方的C和一些地方的C不能通用,于是在1988年C语言标准化,一直至今。

编译器

编译与链接

C是一门编译型计算机语言,C语言的源码只是文本文件,只有通过编译器的翻译和链接器的链接,生成二进制可执行文件,才能执行。(计算机只能识别二进制的指令)。

执行流程:.c文件被编译器编译成.obj文件(目标文件),再被链接器链接为可执行的.exe文件。

编译器对比

C语言是编译型语言,需要依赖编译器将计算机语言转换成机器能执行的机器指令。

msvc,clang,gcc是常见编译器,而我们用的更多是集成开发环境如VS202X,XCode,Clion,DevC++。

集成开发环境(IDE):是用于提供程序开发环境的应用程序,一般包括代码编辑器,编译器,调试器,图形用户界面等。集成了代码编写功能,编译功能,调试功能等一体化的开发软件服务套。

VS202X:集成MSVC,安装简单,不用过多配置,使用方便。

XCode:集成Clang,苹果电脑用。

Clion:默认CMake编译器,但编译器可以自己配置,就是要收费。

CodeBlock:集成gcc,要自己配置环境,超级小众的。

DevC++:集成gcc,工具较简单,一般不用,就竞赛乐意用。

VSCode其实是编辑器,只是可以安装各种插件来搭建C/C++环境,小白不推荐。

项目,源文件与头文件

下面都默认在VS2022中。

创建项目(代码是在项目中管理的),项目名称最好有意义,名称不要特殊字符和中文,项目存放的位置也不要含空格,中文字符,特殊字符。

源文件:就是.c为后缀的文件

头文件:就是.h为后缀的文件

main函数——程序入口

main函数是程序的入口,也叫主函数。main前面的int表示函数执行结束后返回一个整形类型的值,与main函数结尾的return 0前后呼应。

main函数是程序的入口,有且只有一个,程序从main函数的第一行开始执行,即使一个项目中有多个.c文件,也只有一个main函数。

int main()
{




    return 0;
}

也不一定都是return 0,也会有异常返回,那时候就要返回非0的值了。

void main属于老写法了,代表不需要返回东西,也就不用写return 0了,但我们现在不用了。

void main()
{



}

另一种写法:

int main(void)
{

    return 0;

}

代表main函数不接受参数。

还有一种:

int main(int argc, char* argv[], char* envp[])
{


    return 0;
}

argc:程序运行时可执行参数的个数,

argv:程序运行时的可执行参数

envp:环境变量

这些写法启示了我们main函数也是可以有参数的

库函数

printf是一种库函数,它的功能是打印信息到屏幕。

与其对应的还有输入函数 scanf

而我们要实现输入与输出,就一定要有这个:

#include <stdio.h>

stdio:standard input output

stdio.h:标准输入输出头文件

库函数:不再重复实现常用的代码,让程序员提高效率,C语言规定了一组函数,这些函数由不同的编译器厂商按照C语言的标准去实现,给程序员们用。

这些函数共同组成一个函数库,被称为标准库,函数也就叫库函数了。

不同编译器厂商可能会扩充不同的库函数。

一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用要包含对应头文件

简单来说就是把常见的功能实现成函数,让程序员直接使用,提高效率。

关键字

C语言中一批保留名字的符号,如if,break,auto,while等等。

1.这些关键字都具有特殊意义,保留给C语言使用。

2.关键字无法自己创建。

3.程序员在创建标识符时不能和关键字重复。

字符和ASCII编码

键盘上能敲出来的都是字符,C的字符是用单引号括起来的,如'a','@','fhg','#'。

计算机能识别以及能存储的都是二进制数据,所以字符在内存中肯定也是二进制方式存储,编码就是人们对于每个字符编的一个二进制序列,序列与字符一一对应。

要记住一些:

字符A-Z是65-90

字符a-z是97-122

大小写对应的ASCII差值是32

字符0-9是48-57

换行\n是10

这些字符中0-31这32个字符不可打印,它们都有特殊意义。

字符串与\0

双引号括起来的一串字符就是字符串,如"asdfgjhkl"

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

一定要有\0,不然会出现问题。

转义字符

顾名思义,转变原来意思的字符,如\n,\0

原来是某个意思,加上\后,意思改变。

下面列举常见转义字符:

\?:在书写多个连续问号,防止它们被解析成三字母词。

\':表示字符常量'

\":表示字符串内部的"

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

\a:令终端发出警报声或闪烁。

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

\f:换页符,光标移动到下一页。

\n:换行。

\r:回车,光标移动到同一行开头。

\t:制表符,光标移动到下一个水平制表位。

\v:垂直分隔符,光标移动到下一个垂直制表位。

下面还有三中特殊的转义字符:

\0:代表null

\ddd:d,d,d表示1-3个八进制数字。(\0就是特殊的\ddd)

\xdd:d,d表示1-2两个十六进制数字。

语句

空语句

单独一个分号就是空语句

int main()
{
  ;
    return 0;
}

表达式语句

表达式后面加上分号就是表达式语句

int main()
{
    4+8;
    return 0;
}

函数调用语句

函数调用的时候也要加分号,这就是函数调用语句

int main()
{
    printf("nihao\n");
    return 0;
}

复合语句

就是代码块,及{}里的内容,一个函数就可以说是一个复合语句。

控制语句

用于控制程序的执行流程,已实现程序的各种结构方式(顺序结构,选择结构,循环结构)

条件判断语句(分支语句):if语句,whitch语句

循环执行语句:do while语句,while语句,for语句

转向语句:break语句,continue语句,goto语句,return语句

注释

注释的两种形式

注释就是对代码的说明

1.

/*。。。。*/

/*这是一条注释*/
/*
这种形式的注释
可
  以
 分行写
*/

2. //

//这种形式就只能写单行,但可以放在句首或句尾。

注释被替换

编译时,注释会被替换成空格,比如说

printf("min/*这里是注释*/Value");

输出出来就是min Value而不是minValue。

  • 35
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值