白骑士的C语言教学基础篇 1.1 C语言介绍.pages

系列目录

上一篇:无内容

        在这一篇内容中,我们将介绍C语言的基本概念、历史与发展,以及如何安装和设置C语言的开发环境。

什么是C语言?

        C语言是一种通用的、过程化的编程语言,由丹尼斯·里奇(Dennis Ritchie)在20世纪70年代初于贝尔实验室(Bell Labs)开发。C语言以其高效性和灵活性而闻名,广泛用于系统编程、嵌入式开发、游戏开发和高性能计算等领域。其特点包括:

  • 简洁和高效:C语言提供了简洁的语法和高效的内存管理机制,使其能够直接操作硬件和系统资源;
  • 跨平台:C语言具有良好的可移植性,代码可以在不同的平台上编译和运行;
  • 广泛应用:C语言是许多现代编程语言(如C++、Java、C#)的基础,掌握C语言有助于学习和理解其他编程语言。

C语言的历史与发展

        C语言的历史可以追溯到20世纪60年代末和70年代初。以下是C语言发展的一些重要里程碑:

  • BCPL和B语言:C语言的前身是BCPL(Basic Combined Programming Language)和B语言。BCPL由马丁·理查兹(Martin Richards)在1967年开发,用于编写系统软件。随后,肯·汤普逊(Ken Thompson)在贝尔实验室开发了B语言,作为BCPL的简化版本。
  • C语言的诞生:1972年,丹尼斯·里奇在贝尔实验室基于B语言开发了C语言,最初用于重写UNIX操作系统内核。C语言结合了BCPL和B语言的优点,提供了更强的类型检查和结构化编程支持。
  • 标准化:1983年,美国国家标准学会(ANSI)成立了一个委员会,负责制定C语言的标准。1989年,ANSI发布了第一个C语言标准,即ANSI C或C89。随后,国际标准化组织(ISO)也采纳了这一标准,称为ISO C或C90。1999年和2011年,ISO发布了C99和C11标准,对C语言进行了扩展和改进。
  • 现代发展:随着C语言的不断发展,新的标准和特性不断被引入,如C17和即将发布的C2x。C语言仍然是现代计算机科学和软件工程的重要组成部分,被广泛应用于各个领域。

安装与设置C语言开发环境

        要开始学习和使用C语言,首先需要安装和设置开发环境。以下是一些常见的C语言开发环境和设置步骤:

安装编译器

        编译器是将C语言代码转换为机器代码的工具。常见的C语言编译器包括GCC(GNU Compiler Collection)、Clang和微软的MSVC(Microsoft Visual C++)。以下是安装GCC编译器的步骤:

Windows

        下载并安装MinGW(Minimalist GNU for Windows),可以通过MinGW安装管理器选择安装GCC编译器。

        设置环境变量,将MinGW的‘bin‘目录添加到系统的‘PATH‘中。

macOS

        打开终端,运行以下命令安装Xcode命令行工具,其中包含Clang编译器:

xcode-select --install

Linux

        打开终端,根据使用的Linux发行版运行以下命令安装GCC编译器:

sudo apt-get update
sudo apt-get install gcc

选择IDE或文本编辑器

        集成开发环境(IDE)和文本编辑器可以帮助编写和调试C语言代码。以下是一些常见的IDE和编辑器推荐:

  • Visual Studio Code:跨平台的轻量级编辑器,通过安装C/C++插件支持C语言开发;
  • Code::Blocks:开源的跨平台IDE,支持多种编译器,适合初学者使用;
  • Eclipse CDT:基于Eclipse的C/C++开发工具,支持多种编译器和构建工具;
  • CLion:JetBrains开发的跨平台IDE,提供智能代码补全和调试功能。

配置开发环境

        安装好编译器和IDE后,需要进行一些基本配置以便开始编写和编译C语言代码。以下是Visual Studio Code的配置示例:

        安装C/C++插件:打开Visual Studio Code,进入扩展管理器(Extensions),搜索并安装C/C++插件。

        创建C语言项目:在Visual Studio Code中创建一个新的工作区,并在工作区目录下创建一个新的C文件(例如‘main.c‘)。

        配置编译任务:创建一个名为‘tasks.json‘的配置文件,定义编译任务。例如:

{
    "version": "2.0.0",
    "tasks": [
    {
        "label": "build",
        "type": "shell",
        "command": "gcc",
        "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}/${fileBasenameNoExtension}"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "problemMatcher": ["$gcc"],
        "detail": "Generated task by C/C++ extension"
        }
    ]
}

        编译和运行代码:在C文件中编写简单的C代码,保存后按‘Ctrl+Shift+B‘执行编译任务,生成可执行文件。打开终端,运行生成的可执行文件。

总结

        通过本节的学习,您已经了解了C语言的基本概念、历史与发展,以及如何安装和设置C语言的开发环境。掌握这些基础知识将帮助更好地理解和使用C语言,为后续的深入学习打下坚实的基础。在接下来的章节中,我们将继续探讨C语言的基础语法和编程技巧,进一步提升编程能力。

下一篇:白骑士的C语言教学基础篇 1.2 C语言基础语法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/764104.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何用matplotlib绘制图像分类任务的类别特征空间分布

import matplotlib.pyplot as plt import numpy as np from sklearn.decomposition import PCA from sklearn.datasets import load_iris from mpl_toolkits.mplot3d import Axes3D# 加载示例数据(Iris 数据集) data load_iris() X data.data y data.…

SQLyog脚本无限试用重置脚本

文章目录 引言脚本(win)必要操作、说明 引言 SQLyog 需要po jie,但是网上的没看到很好使的,直接下的官方。能处理14天试用也是很ok的。 脚本(win) echo offREM SQLyog注册表key,可能跟你的不一样,如果不一样,请替换…

聊聊gitlab ci如何构建以时间为版本号的docker镜像

前言 最近朋友他们部门有部分内部项目,打算用gitlab ci来做项目持续集成部署,他们有个需求,构建docker镜像的时候,版本需要是以当前时间作为版本。其格式为yyyymmddhhmm 一开始朋友翻阅官方文档,发现gitlab ci有个变…

uniapp实现可拖动悬浮按钮(最新版2024-7月)

此章主要介绍如何使用uniapp跨平台开发,实现悬浮按钮,移动端经常会有所这样的需求,那么功能如下: 1.圆圈悬浮球,上下左右靠边显示 2.可以界面任何拖动,不会超出界面 3.单击悬浮球的点击事件 效果&#xf…

JAVA-Redis数据结构—跳跃表(Skiplist)【包含Java实现详情代码】

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

分析:地产行业使用短信群发平台营销引流效果如何?

地产行业使用短信群发平台营销引流的效果可以从以下几个方面进行分析和归纳: 一、营销效果显著提升 1.精准定位目标客户:通过短信群发平台,地产企业可以根据客户的年龄、职业、地域、购房需求等信息,进行精准筛选和定位&#xf…

ElementUI样式优化:el-input修改样式、el-table 修改表头样式、斑马格样式、修改滚动条样式、

效果图: 1、改变日期时间组件的字体颜色背景 .form-class ::v-deep .el-date-editor { border: 1px solid #326AFF; background: #04308D !important; } .form-class ::v-deep .el-date-editor.el-input__wrapper { box-shadow: 0 0 0 0px #326AFF inset; } // 输入…

喜讯|华院计算认知智能引擎算法平台荣登BPAA大赛创新组TOP50

6月25日,备受瞩目的BPAA第四届全球应用算法模型典范大赛(以下简称“BPAA大赛”)正式揭晓了《第四届全球应用算法模型典范大赛创业组TOP50榜单》和《第四届全球应用算法模型典范大赛创新组TOP50榜单》。其中,华院计算技术&#xff…

智能技术【机器学习】总结

文章目录 第一部分 优化第二部分 模型第一章 神经网络(MLP, BP, CNN, GNN, and Attention)1.1 神经网络基础1.1.1 高次非线性函数1.1.2 感知器与神经网络1.1.3 联结主义模型1.1.4 动机——为什么每个人都在谈论深度学习?1.1.5 背景1.1.6 神经…

Keysight 是德 EXR104A 实时示波器

Keysight 是德 EXR104A 实时示波器 全部 4 个通道均可提供 1 GHz 的带宽,强大的 8 合 1 仪器,出色的硬件加速绘图功能,可以全面升级到 2.5 GHz 带宽和 8 个通道 全部 4 个模拟通道上均可提供 1 GHz 带宽通过 ASIC 技术实现更快的测试速度有…

项目范围管理(信息系统项目管理师)

需求管理计划是对项目的需求进行定义、确定、记载、核实管理和控制的行动指南。制定需求管理计划,规划如何分析、记录和管理需求,这样才是较为稳妥的方法在信息系统集成项目中,需求管理贯穿于整个过程,他的最基本的任务就是明确需…

破解电脑卡顿难题,将数据优化,5分钟提升运行速度

当电脑变得缓慢且反应迟钝时,工作效率和娱乐体验都会大打折扣。而电脑卡顿是由于系统资源占用过多、磁盘空间不足等原因引起的。因此,我们经常需要寻找优化措施,提升电脑的运行速度。文章整理了4个优化方法,帮助你破解卡顿难题&am…

Linux下编程之内存检查

前言 我们在进行编程时,有时不免会无意中写出一些容易导致内存问题(可能一时表象上正常)的代码,导致的后果肯定是不好的,就像一颗颗“哑弹”,令人心慌。网上推荐的辅助工具很多,此篇文章…

机器学习——强化学习中的“策略π”的个人思考

这两天回顾了《西瓜书》中的最后一章——“强化学习”,但是忽然发现之前对于本章中的“策略π”的理解有些偏差,导致我在看值函数公式时有些看不明白。对此,我在网上查了一些资料,但是大部分人都是一笔带过,或者是照本…

Day8: 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项

题目232. 用栈实现队列 - 力扣(LeetCode) class MyQueue { public:MyQueue() {}void push(int x) { // 出栈input.push(x);}int pop() {// 如果出栈为空,把入栈元素全都转移到出栈if (output.empty()) {while (!input.empty()) {int itop i…

基于小波同步压缩变换与集成深度学习的情绪识别

摘要 本研究设计了一种基于小波同步压缩变换(WSST)驱动优化集成深度学习(DL)的自动多类情绪识别(AMER)系统,用于识别样本依赖(subject-dependent)和样本独立(subject-independent)两种模式下的人类情感。使用WSST方法将1-D脑电(EEG)信号转换为2-D时频表征(TFR)&…

2024年6月总结及随笔之打卡网红点

1. 回头看 日更坚持了547天。 读《人工智能时代与人类未来》更新完成读《AI未来进行式》开更并更新完成读《AI新生:破解人机共存密码》开更并持续更新 2023年至2024年6月底累计码字1267912字,累计日均码字2317字。 2024年6月码字90659字,…

hadoop分布式云笔记系统-计算机毕业设计源码15725

摘 要 随着信息技术的飞速发展,人们对于数据的存储、管理和共享需求日益增长。传统的集中式存储系统在处理大规模数据时面临着性能瓶颈和扩展性问题。而 Hadoop 作为一种分布式计算框架,为解决这些问题提供了有效的解决方案。 本研究旨在设计并实现一种…

昇思25天学习打卡营第6天|关于函数与神经网络梯度相关技术探讨

目录 Python 库及 MindSpore 相关模块和类的导入 函数与计算图 微分函数与梯度计算 Stop Gradient Auxiliary data 神经网络梯度计算 Python 库及 MindSpore 相关模块和类的导入 Python 中的 numpy 库被成功导入,并简称为 np。numpy 在科学计算领域应用广泛&#x…

2、SSD基本技术

发展史 上文中说SSD是以闪存为介质的存储设备,这只能算是现代SSD的特点,而不能算是定义。 HDD是磁存储,SSD是电存储;HDD的特点导致寻址到不同扇区其性能存在明显差异,比如寻址下个扇区和上个扇区;而SSD寻…