当前位置: 首页 > news >正文

[C语言]——C语言常见概念(1)

目录

一.C语言是什么、

二.C语言的历史和辉煌

三.编译器的选择(VS2022为例)

1.编译和链接

2.编译器的对比

3.VS2022 的优缺点

四.VS项目和源文件、头文件介绍

五.第⼀个C语言程序 ​​​​​​​


一.C语言是什么、

  • ⼈和⼈交流使⽤的是⾃然语⾔,如:汉语、英语、⽇语
  • ⼈和计算机是怎么交流的呢?使⽤计算机语言
  • ⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机⼯作的。 C语⾔就是众多计算机语⾔中的⼀种,当然C++/Java/Go/Python都是计算机语⾔。

二.C语言的历史和辉煌

C 语言最初是作为 Unix 系统的开发工具而发明的。

三.编译器的选择(VS2022为例

1.编译和链接

C语⾔是⼀⻔编译型计算机语⾔, C语⾔源代码都是文本文件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏
C语⾔代码是放在 .c 为后缀的⽂件中的,要得到最终运⾏的可执⾏程序,中间要经过编译链接2个过程。

 

 

⼀个⼯程⼀般都会有多个源⽂件组成,如下图所⽰,演⽰了源程序经过编译器和链接器处理的过程。  

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

 这就是,在Windows电脑上C语⾔程序⽣成的exe可执⾏⽂件:

2.编译器的对比

  • C语⾔是⼀⻔编译型的计算机语⾔(如python为解释型语言),需要依赖编译器将计算机语⾔转换成机器能够执⾏的机器指令。
  • 那我们常⻅的C语⾔编译器都有哪些呢? ⽐如:msvc、clang、gcc 就是⼀些常⻅的编译器,当然也有⼀些集成开发环境(IDE)如:VS2022、XCode、CodeBlocks、DevC++、Clion等。
  • 集成开发环境(IDE)⽤于提供程序开发环境的应⽤程序,⼀般包括代码编辑器、编译器、调试器和图形⽤⼾界⾯ 等⼯具。 集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。

• VS2022 集成了MSVC(苹果系统不适用,安装报包较⼤⼀些,安装简单,⽆需多余配置,使⽤起来⾮常⽅便)
• XCode 集成了clang(苹果电脑上的开发⼯具)
• CodeBlocks 集成了gcc(这个⼯具⽐较⼩众,需要配置环境,不太推荐)
• DevC++ 集成了gcc(⼩巧,但是⼯具过于简单,对于代码⻛格的养成不好,⼀些竞赛ACM、蓝桥杯使⽤)
• Clion 是默认使⽤CMake,编译器是可以配置的(⼯具是收费,所以暂时推荐⼤家使⽤)
VScode——可安装各种插件来搭建C/C++的开发环境,更加类似于一个文本编辑器
整体考虑,更推荐安装VS2022的社区版本学习,免费,使⽤⽅便,⼯作中常⻅。
VS2022的安装教程: https://www.bilibili.com/video/BV11R4y1s7jz/

3.VS2022 的优缺点

优点:
  • VS2022 是⼀个主流的集成开发环境,企业中使⽤较为普遍
  • VS2022 包含了:编辑器+编译器+调试器,功能强⼤
  • 直接安装即可使⽤,基本不⽤额外配置环境,上⼿容易
  • 默认界⾯是中⽂的,初学者友好
缺点:
  • 功能丰富,安装包⼤,占⽤空间多。

四.VS项目和源文件、头文件介绍

  • 在VS上写代码,我们是需要创建项⽬的,直接新建项⽬就可以了。 在项⽬中就可以添加源⽂件和头文件。
  • 项目名称最好有意义(Test_),并且最好不要使用中文和特殊字符
  • 代码位置路径不要包含空格、特殊字符和中文字符
  • C语⾔把 .c 为后缀的文件称为源文件,把 .h (header)为后缀的文件称为头文件

五.第⼀个C语言程序 

#include <stdio.h>
int main()
{printf("hello C\n");return 0;//约定返回0,在c语言中,正常返回0,异常才返回非0的值
}
这⾥演示VS2022中创建项⽬和编写C代码的过程,并运⾏出结果。 在VS2022上运⾏代码的快捷键: Ctrl+f5(Fn+Ctrl+F5)
  • void main( )是旧式的写法,不推荐,表示不需要返回,void表示空的意思
  • int main(void)表示函数不接受参数
  • main函数也可以有参数,参数有特意义,int main(int argc,char*arg[ ],char*envp[ ])

相关文章:

  • 【Appium问题】每次启动appium都会安装一次uiautomator
  • window环境下使用k8s部署.net core项目
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • 面试经典150题(101-104)
  • 电脑解锁后黑屏有鼠标--亲测!!不需要重装系统!!
  • gan, pixel2pixel, cyclegan, srgan图像超分辨率
  • git 如何将多个提交点合并为一个提交点 commit
  • chromedriverUnable to obtain driver for chrome using ,selenium找不到chromedriver
  • 【AI视野·今日NLP 自然语言处理论文速览 第八十二期】Tue, 5 Mar 2024
  • Java零基础 - try-catch-finally和throw语句
  • Mysql学习之MVCC解决读写问题
  • 新学习到的知识点【Python/C++】,持续更新中
  • Android 多桌面图标启动, 爬坑点击打开不同页面
  • C语言项目实战——贪吃蛇
  • Docker知识点总结二
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • CSS 提示工具(Tooltip)
  • Docker 笔记(2):Dockerfile
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • express.js的介绍及使用
  • If…else
  • iOS编译提示和导航提示
  • vue学习系列(二)vue-cli
  • 笨办法学C 练习34:动态数组
  • 初识 beanstalkd
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 山寨一个 Promise
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 双管齐下,VMware的容器新战略
  • 一些关于Rust在2019年的思考
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #、%和$符号在OGNL表达式中经常出现
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1)Android开发优化---------UI优化
  • (3)(3.5) 遥测无线电区域条例
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (转)shell中括号的特殊用法 linux if多条件判断
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .Net IOC框架入门之一 Unity
  • .NET 事件模型教程(二)
  • .NET 依赖注入和配置系统
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net开发引用程序集提示没有强名称的解决办法
  • /etc/motd and /etc/issue
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [DAX] MAX函数 | MAXX函数
  • [docker] Docker容器服务更新与发现之consul
  • [exgcd] Jzoj P1158 荒岛野人
  • [Gamma]阶段测试报告
  • [HackMyVM]靶场Crossbow