1.什么是C语言?
通俗来讲,C语言就是人与机器进行交流的一种语言。例如:人与人交流要用英语、汉语等等,而人与机器交流就可以用到C语言,当然也可以用C++/Java/Python/Go/汇编等等。
2.C语言是怎么执行的?
C语言是一门编译型的计算机语言。C语言源代码是文本文件,文本文件本身无法执行,必须通过编译器进行翻译和链接器进行链接,生成二进制的可执行文件才可以执行。
每个源文件(.c)单独经过编译器翻译,生成对应的目标文件(.obj)。
多个目标文件和库文件经过链接器处理生成对应的可执行文件(.exe)。
3.编译器和集成开发环境的区别
C语⾔是⼀⻔编译型的计算机语⾔,需要依赖编译器将计算机语⾔转换成机器能够执⾏的机器指令。
常见的C语言编译器有:mscv、clang、gcc等。
而集成开发环境(IDE)⽤于提供程序开发环境的应⽤程序,⼀般包括代码编辑器、 编译器 、 调试器 和 图形⽤⼾界⾯ 等⼯具。 集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。
常见的集成开发环境有:VS2022、DevC++、XCode、CodeBlocks等
• VS2022 集成了MSVC(安装包较⼤⼀些,安装简单,⽆需多余配置,使⽤起来⾮常⽅便)
• XCode 集成了clang(苹果电脑上的开发工具)
• CodeBlocks 集成了gcc(这个工具比较小众,需要配置环境,不太推荐)
• DevC++ 集成了gcc(小巧,但是工具过于简单,对于代码风格的养成不好,⼀些竞赛使用)
4.第一个C语言程序
C语言项目中包含源文件和头文件。
C语言把.c为后缀的文件叫源文件,把.h为后缀的文件叫头文件。
#include<stdio.h>
int main()
{
printf("Hello C语言\n");
return 0;
}
运行结果:
在这个程序中简单实现了标准输出Hello C语言。
在程序中需要讲解的是:
(1)main函数
每个C语言程序无论写了多少行代码,代码的起点永远在main函数。main函数是程序的入口。
main函数也被叫做主函数。
注意:
• main函数有且仅有一个
• 即使一个项目中有多个C文件,也只能有一个main函数(因为程序的入口只能有一个)
而在程序中所写的:
int main()
main函数前面的int表示main函数在返回的时候需要返回到一个整型类型的值,也就是所对应的:
return 0;
因此我们可知一种基本的main函数写法:
int main()
{
return 0;
}
除此以外,还有另一种写法:(但不推荐使用)
void表示空的意思,在这里意味着没有返回值,也就是返回值为空。
void main()
{
}
第三种main函数写法:
前面解释过,void为空的意思,在这里意味着main函数中不需要参数,也就是不需要给他传参。
传参的概念在后面学习才会学到。
int main(void)
{
return 0;
}
(2)写C语言代码的一些注意点
• C语言写代码中,每一条语句后面都需要带分号 ;
• 在代码中所用的所有符号,即 () ; 等都要是英文符号,不能是中文符号。
(3)printf和库函数及头文件关系
上面程序中有一个代码如下:
printf("Hello C语言\n");
代码中使用了 printf 函数,实现了在屏幕上的信息的打印。
这⾥简单的介绍⼀下 printf :
printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进⾏信息的打印。
上⾯的代码是使⽤ printf 函数打印字符串。只要把想要打印的⼀串字符放在双引号中并传递给 printf函数就可以打印。
printf也可以用来打印其他类型的数据,比如:
printf("%d\n", 100); //打印整型
printf("%s\n", "hehe"); //打印字符串类型
printf("%c\n", 'a'); //打印字符型
这里所有的%d,%s,%c都是占位符,他会被后面的值所替代。(以后有文章会细讲~)
例如:%d会被后面的100所替代。
我们在使用printf这个库函数的时候,是需要包含头文件的。
如:printf库函数需要包含stdio.h这个头文件。
具体方法为:
#include<stdio.h>
什么是库函数?
为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了⼀组函数,这些函数再由不同的编译器⼚商根据标准进行实现,提供给程序员使用。这些函数组成了⼀个函数库,被称为标准库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函数其他编译器不⼀定⽀持)。
⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使用,要包含对应的头⽂件。
库函数比较多,可参考链接🔗:https://cplusplus.com/reference/clibrary/
(4)关键字
C语⾔中有⼀批保留的名字的符号,比如:int 、 if 、 return ,这些符号被称为保留字或者关键
字。
• 关键字都有特殊的意义,是保留给C语⾔使⽤的
• 程序员自己在创建标识符的时候是不能和关键字重复的
• 关键字也是不能自己创建的。
C语⾔的32个关键字如下:
auto break case char const continue default
do double else enum extern
float for goto if int long register return
short signed sizeof static
struct switch typedef union unsigned void
volatile while
附上C语言官方标准的全部关键字查看链接🔗:
5.字符和ASCII编码
在键盘上可以敲出各种字符,如:a,b,!,@,&等,这些符号都被成为字符,在C语言中,字符是用单引号括起来的。如:‘a’,'b','!','@'。
字符的打印格式可以使用 %c 来指定,也可以直接打印。
printf('a'); //直接打印字符a
printf("%c",'a'); //指定%c 打印a
我们知道计算机很“笨”,他只能识别出二进制形式的数据,那么这些字符是以什么样的二进制数据存储在计算机中呢?我们每个人可以给这些字符编一个数字,这个数字就叫做编码。为了方便人们相互通信,美国国家标准协会(ANSI)出台一个标准ASCII编码,用于统一字符编码。
ASCII码表
下列码表含有全部 128 个 ASCII 十进制 (dec) 、八进制 (oct) 、十六进制 (hex) 及字符 (ch) 编码。
参考:https://zh.cppreference.com/w/cpp/language/ascii
在学习时,我们可随时查看此表,来获得常用字符的ASCII码值。
常用为:
• 字符A~Z的ASCII码值从65~90
• 字符a~z的ASCII码值从97~122
• 对应的大小写字符(a和A)的ASCII码值的差值是32
//展示大小写字符的ASCII码值差异
printf("%c\n",97);//小写a
printf("%c\n",97-32);//大写A ASCII值为65
• 数字字符0~9的ASCII码值从48~57
• 换行 \n 的ASCII值是:10
• 在这些字符中ASCII码值从0~31?这32个字符是不可打印字符,⽆法打印在屏幕上观察
展示所有可打印字符:
//展示所有可打印字符
int i = 0;
for (i = 32; i <= 127; i++)
{
printf("%c ", i);
if (i % 16 == 15)
printf("\n");
}
6.字符串
C语言中,用双引号括起来的叫字符串。如:"hehe",这就是一串字符串。
字符串的打印格式可以使用 %s 来指定,也可以直接打印。
printf("hehe");//直接打印字符串hehe
printf("%s","abcde");//指定%s打印abcde
隐藏知识:C语言字符串末尾隐藏着一个'\0'字符,这个字符是字符串的结束标志。
通过调试中的监视窗口我们可以观察到这个结束标志:
我们肉眼见到的是五个字符:a,b,c,d,e,但实际在末尾有一个隐藏的转义字符"\0","\0"是字符串的结束标志。因此我们在使用printf()打印字符串或使用strlen()计算字符串长度时,计算机在读取字符串时遇到"\0"就自动停止了。
我们来写一个代码观察"\0"的存在:
//观察字符串结束符号"\0"
char arr1[] = {'a','b','c'}; //arr1数组中存放3个字符
char arr2[] = "abc"; //arr2中存放字符串abc
printf("%s\n", arr1);
printf("%s\n", arr2);
运行结果显示为:
原因:在arr1数组中存放的是3个字符,他在进行读取时必须要找到"\0"这个结束符号才能结束,因此读出许多随机值,即其中的烫烫烫....;而arr2中存放的是字符串,在字符串末尾隐藏着"\0",因此计算机在读取字符串时读取abc后便找到了结束符号"\0",打印出来的便是abc。
如果要使arr1打印结果与arr2相同,即都输出abc字符串,可在arr1数组末尾自己添加一个"\0"。
//观察字符串结束符号"\0"
char arr1[] = {'a','b','c','\0'}; //手动添加'\0'作为结束标志
char arr2[] = "abc";
printf("%s\n", arr1);
printf("%s\n", arr2);
运行结果显示为:
成功啦~ 😀
总结
本篇文章简单介绍了C语言的概念、如何运行及C语言对的部分知识点,详情可见目录~
转义字符及语句分类会在C语言基本概念(2)进行介绍~
如果想进一步了解可以加个关注!会尽快更新哒!(●'◡'●)
初次写文章,如有错误,望批评指正! 谢谢!