【C语言】常见概念

C语言是编译型语言,源代码需通过编译器变为机器指令。编译包括编译器对源文件的处理,链接器整合目标文件和库函数生成可执行程序。main函数是程序入口,printf是常用的库函数,用于格式化输出。库函数是预定义的函数集合,如<stdio.h>中的函数。ASCII编码定义了字符在内存中的二进制表示,字符串以作为结束标志。
摘要由CSDN通过智能技术生成

编译和链接

C语言是一门编译型计算机语言,C语言源代码都是⽂本⽂件,文本文件本身⽆法执⾏,必须通过编译
器翻译和链接器的链接,⽣成⼆进制的可执行文件,可执行文件才能执⾏。
C语⾔代码是放在 .c 为后缀的⽂件中的,要得到最终运行的可执行程序,中间要经过编译链接2个过程。
在这里插入图片描述
⼀个⼯程⼀般都会有多个源⽂件组成,如下图所示,演⽰了源程序经过编译器和链接器处理的过程。
请添加图片描述
注:

  1. 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)
  2. 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)

编译器

C语⾔是⼀⻔编译型的计算机语言,需要依赖编译器将计算机语⾔转换成机器能够执⾏的机器指令。
比如:msvc、clang、gcc 就是⼀些常见的编译器,当然也有⼀些集成开发环境如:VS2022、
XCode、CodeBlocks、DevC++、Clion等。
集成开发环境(IDE)⽤于提供程序开发环境的应⽤程序,⼀般包括代码编辑器、 编译器 、 调试器和图形用户界面等工具。 集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。

main函数

也叫主函数,是程序的⼊⼝。main函数有且只有一个,即使项目中有多个.c也是一样的。

分号

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

注释

注释分为 // 与 /* */两种
目的是提高程序的可读性,让人更好的理解你的代码,方便代码的阅读和维护。

#include <stdio.h>
int main()
{
	//这种注释独占一行//
	/*
	这种注释可以有
	好
	多
	行
	*/
}

printf和库函数

printf()用于格式化输出到屏幕。例如

#include<stdio.h>
int main()
{
	printf("%s", "银狼");
}

输出结果为:
在这里插入图片描述

%s 是占位符,使用不同的占位符,可以让printf输出不同的信息

printf("%d\n", n); //printf打印整型
printf("%c\n", 'q'); //printf打印字符
printf("%lf\n", 3.14); //printf打印双精度浮点型
printf("%s\n", "string"); //printf打印字符串

printf是⼀个库函数,需要有stdio.h这个头文件,也就是
#include <stdio.h>

那什么是库函数呢?

为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不
同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准
库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函
数其他编译器不⼀定⽀持)。
⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。

关键字

C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键
字。
• 关键字都有特殊的意义,是保留给C语⾔使⽤的
• 程序员⾃⼰在创建标识符的时候是不能和关键字重复的
• 关键字也是不能⾃⼰创建的。
C语⾔的32个关键字如下:

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

字符和ASCII编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:‘a’,‘b’,‘@’。

我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的⽅式。
详情请参考

https://zh.cppreference.com/w/cpp/language/ascii

我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数
据:
• 字符A-Z的ASCII码值从65-90
• 字符a-z的ASCII码值从97-122
• 对应的大小写字符(a和A)的ASCII码值的差值是32
• 数字字符0-9的ASCII码值从48-57
• 换⾏ \n 的ASCII值是:10
• 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察

单个字符的打印可以使⽤%c来指定格式:

#include <stdio.h>
int main()
{
 printf("%c\n", 'Q');
 printf("%c\n", 81);//这⾥的81是字符Q的ASCII码值,也是可以正常打印的
 return 0;
}

字符串和\0

使⽤双引号括起来的⼀串字符就被称为字符串
打印格式为%s,也可直接打印

printf("%s\n","C");
printf("c");

C语⾔字符串末尾隐藏放着⼀个\0字符,这个 \0字符是字符串
的结束标志。
对于字符串"abcd",字符长度为char[5],这就是因为 \0隐藏在末尾。
\0是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者
strlen() 计算字符串⻓度的时候,遇到\0的时候就⾃动停⽌了。

转义字符

转义字符顾名思义:转变原来的意思的字符。
C语⾔中像这样的转义字符还有⼀些,具体如下:
• \? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• \’ :⽤于表⽰字符常量’
• \" :⽤于表⽰⼀个字符串内部的双引号
• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
• \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
• \t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。
下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式
• \ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X
• \xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其ASCII码值是0。

转义字符参考:https://zh.cppreference.com/w/c/language/escape

希望对你能有帮助~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值