首页 > 其他分享 >【C语言】:如何创建一个简单的C语言项目

【C语言】:如何创建一个简单的C语言项目

时间:2024-07-21 10:28:56浏览次数:9  
标签:函数 创建 代码 C语言 关键字 编译器 简单 库函数

1. C语言是什么? 

人与人之间的沟通交流用的是各国语言,例如:汉语,英语,西班牙语等等。类似的,人与机器之间的沟通用的是计算机语言,而C语言便是众多计算机语言中的一种。

人们通过计算机语言编写程序,给计算机下达命令,让计算机工作。像我们熟知的C++/Java/phthon/Go等都是计算机语言。

2.编译器的选择

2.1编译和链接

C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成二进制的可执行文件。只有可执行文件才能执行。 

C语言代码是放在.c为后缀的文件中的,要得到最终运行的可执行程序,中间要经历编译链接两个过程。

 ​编辑

一个工程一般都是由多个源文件组成,如上图,演示了源程序经过编译器和链接器处理的过程。 

注:

1.每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)。

2.多个目标文件和库文件经过编译器处理生成对应的可执行程序(.exe文件)。

2.2编译器的对比

C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转化为机器能够执行的机器指令。

我们常见的编译器有:msvc、clang、gcc等等。当然也有一些我们也许更加成熟悉的集成开发环境,如:VS2022、XCode、DevC++、CodeBlocks、Clion等等。

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

部分集成开发环境(IDE)展示

   ​编辑

  • VS2022:集成了MSVC(安装包较大一些,不过也只有10G左右,安装简单,无需多余配置,使用起来非常方便)

  • XCode:集成了clang(苹果电脑上的开发工具)

  • CodeBlocks:集成了gcc(这个工具比较小巧,需要配置环境,不太推荐)

  • DevC++:集成了gcc(小巧,但是工具过于简单,对于代码的风格养成不好,部分竞赛使用)

  • Clion:是默认使用CMake,编译器是可以配置的(工具是收费的,故不推荐)

整体考虑,推荐使用VS2022社区版进行学习,免费,使用方便,常见,(风格好看)

VS2022安装教程:https://www.bilibili.com/video/BV11R4y1s7jz/

3.创建第一个简单C语言代码

3.1创建项目

在VS上写代码,我们是需要创建项目的,打开VS后,直接新建项目就行了。步骤如下图:

​编辑​编辑​编辑

3.2创建源文件 

项目创建好之后,在项目中可以看到头文件(.h为后缀)和源文件(.c为后缀),目前我们暂且不研究头文件。如果想写出自己的第一个C语言程序,我们就需要添加一个源文件,步骤如下:

​编辑

图一

​编辑

图二

注意:图二取名时,结尾必须以.c为后缀。(.c为后缀代表以C语言语法来编译代码,.cpp代表以C++的语法来进行编译)

3.3简单代码的编写

接下来进行一个简单的代码编写与讲解。

​
include<stdio.h>int main(){

printf("hello\n");

return 0;

}

​

在VS2022上运行代码的快捷键:ctrl+f5(笔记本:ctrl+fn+f5)

 ​编辑

3.4代码的解释

①main函数(主函数)

每个C语言程序必须有main函数,而且只能有一个(即使有多个.c文件),它是程序的入口。main前面的int表示函数执行结束的时候返回一个整形类型(表示整数)的数,所以在程序结尾处写return 0;正好前后呼应。(为什么是0?约定俗成,记住便好。)

若对前面int还感到很模糊,不用太过纠结,之后会进行更加细致且广泛的讲解。

第一次写代码,常见错误

  • main写成mian

  • main后面的()漏掉了

  • 代码中的所有符号均为英文符号,记得将输入法切换为“英”之后再进行符号的输入。若使用中文符号程序会报错。

  • 一条语句结束后,有分号。若漏了程序也会报错。

②printf函数

代码中使用了printf函数,实现了对信息(hello)的打印

printf是一个库函数,它的功能是进行信息的打印。将要打印的信息放入双引号中便可进行打印。

现在只是知道有这么个函数存在,之后会对printf函数进行更细致的讲解。

③头文件与库函数

为了不再重复的实现常见代码,让程序员的编程效率提高,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,供程序员使用。这些函数组成了一个函数库,被称为标准库,也被称为库函数。(在这个基础上不同编译器厂商可能会额外扩展提供部分函数,但这些函数在别的编译器上不一定支持)

上面#include<stdio.h>即为一个头文件。

std—standard(标准)、i—input(输入)、o—output(输出)

若要使用库函数,就必须要先声明头文件。

就像是要从库函数这个仓库里面拿出你想用的函数,就要先跟仓库管理员打个招呼,而仓库管理员就像是头文件。

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

库函数较多,后期会慢慢慢介绍,提前了解可参考链接:https://cplusplus.com/reference/clibrary/

④换行符

\n为换行的符号,此知识较为单一,看下图例子:

​编辑​编辑

键字

⑤关键字

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

  • 关键字都有特殊的含义,是保留给C语言使用的。

  • 程序员自己在创建标识符的时候是不能和关键字重复的。

  • 关键字也是不能自己创建的。

C语言的32个关键字如下:

​编辑

注意:在C99标准后加入了inlinerestrict_Bool_Comploex_Imaginary等关键字。

一些关键字大家可以去了解一下,不过使用最多的还是这32个。

C语言关键字的全部介绍:C 关键词 - cppreference.com

后面的文章会慢慢涉及到这些关键字。

谢谢各位的观看。

标签:函数,创建,代码,C语言,关键字,编译器,简单,库函数
From: https://blog.csdn.net/2401_86419791/article/details/140584306

相关文章

  • 极客时间:在AutoGen Builder中创建具有定制技能的代理
    尝试使用AutogenBuilder中的本地LLM/SLM后,下一步是探索如何在AutoGenBuilder中创建自定义技能并将其分配给代理。选择了一个从给定URL获取HTML页面的技能。以下是具体步骤:第一步:设置环境请访问“https://medium.com/the-constellar-digital-technology-blog/geek-out-tim......
  • 多线程并发锁分类以及简单实例
    多线程并发锁包括自旋锁、互斥锁、无锁POSIX接口posix接口提供linux下线程操作库,posix默认生成的线程占用8M空间pthread_create线程创建函数pthread_create(pthread_t*th,constpthread_attr_t*attr,void*(*func)(void*),void*arg)//func是函数指针,是线程要调用......
  • 为什么 tree.write 不创建我的 XML 文件?
    在KubuntuLinux上使用PyCharm我通过添加条目来修改XML文件并将更改写入新文件,但该文件没有创建,也没有显示错误:importxml.etree.ElementTreeasETif__name__==('__main__:'):tree=ET.parse('/home/qual/PycharmProjects/Automation_learn/ip_phone_cfg.xm......
  • 如何在Python中使用装饰器动态创建类方法?
    我正在开发一个Python项目,我需要在运行时动态地为类创建方法。我想使用装饰器根据一些外部配置将这些方法添加到类中。要求是:装饰器应该从外部配置(例如字典)读取方法定义。装饰器应该动态地将这些方法添加到类中。每个生成的方法都应具有配置中指定的自己唯一的实现。以......
  • 导入创建对对象的意外引用,具体取决于模块是否是文件,或者是否是包的一部分
    我有一个微妙的导入问题,它创建的变量引用的对象与我期望的不同,这完全取决于我正在编写的模块是“按原样”导入还是作为包的一部分导入。假设我有一个定义Config类和设置它的函数的简单模块:classConfig:def__init__(self,**kwargs):ifkwargs.get......
  • 创建 GUI 元素时 PyQt 应用程序冻结
    我正在尝试创建多个GUI元素来显示视频的文字记录,问题是它在创建GUI时冻结,因为它创建了所有GUI,例如QTextEdit、QLineEdit、QPushButtons和QGraphicsTextItems。需要创建所有这些GUI元素,以便用户可以在视频中随时编辑和更改文本。我尝试过,将GUI元素的创建放在QThr......
  • 使用 openstreetmap 数据创建行人图的左侧和右侧
    我正在尝试通过python使用openstreetmap数据创建行人图。该图是使用OSMnx库创建的。每条边代表每条路,但行人实际上可以走在道路的右侧或左侧。我需要有左侧和右侧来获取交叉节点并将它们相互连接。我尝试将左右两侧的边缘分开,但没有成功。你们中有人有任何经验或知道......
  • 如何填充用 geopandas 溶解地理数据框时创建的多多边形中的孔?
    我的目标是绘制MSOA(英国的连续地理单位)集群的边界,为此我从此处下载了MSOA边界的shapefile。然后,我添加一列簇标签并使用geopandas进行溶解。df.dissolve(by='label',aggfunc='sum')当我使用Folium绘制时,有多个内孔,如附图所示。我该如何删除这些?#create......
  • 如何使用 for 循环在 python jupyter 笔记本中创建动态图?
    我正在学习本课关于用Python求解热方程。该课程指出,在求解热方程后,我们可以通过在循环中简单地调用pyplot.plot()来可视化解的动画图,其中下面的代码将动态绘制每次每个点的温度,从而得到一个动画情节(课程帖子中提供了动画情节的示例)。importnumpyfrommatplotlibi......
  • 苹果手机越狱,iPhone绕ID越狱,苹果手机最简单的越狱方法
    CheckRa1n越狱支持设备:iPhone5S-iPhoneX,兼容系统:iOS12.3~iOS14.8,所以一些iPhone5S以前的老设备(可以通过往期教程老设备越狱)以及iPhoneX以后的新设备都是无法通过heckRa1n越狱,更别说绕ID的,其中iPhoneX以后的新设备目前无法破解ID,某宝、某多的破解ID更多的是硬解换主......