C语言前瞻

文章目录

  • C语言基础简介
    • 编译方式
      • 分布编译
      • 示例流程
      • 一步编译
    • 代码运行
      • 运行结果展示
      • 实际代码

C语言基础简介

  关于C语言的书籍,文章有很多。C的历史我不赘述,只讲C语言的基础语法和使用,帮助大家入门,同时也是自己学习过程的一个回顾。
  首先,C语言是一门编译性语言。简单介绍下什么是编译性语言。我们学习的编程语言由机器语言->低级语言->高级语言演变。机器语言全是2进制的0101编写的,一般人根本看不懂,再往下的就是汇编语言,人类可以看懂,但是还不够简单,因为它跟硬件的耦合比较高,基本上换一套硬件平台就要换汇编指令,对开发者来说不太友好。再往后就是现在的高级语言。高级语言大致分为两种:
  + 编译性语言:比如C,C++
  + 解释性语言:比如Python,shell
编译性语言:编写的程序在执行之前有一个编译的过程,将高级语言文件编译成机器语言文件,在由计算机执行机器语言文件。一般我们使用的C语言编译器是gcc,MinGW等。
  + 优点:因为执行的过程中 无需重新编译 所以执行效率相对较高
  + 缺点:依赖编译器的类型及版本,跨平台性较差
解释性语言:不需要在执行前先编译,而是在执行的过程中,由解释器一行一行的将源代码翻译成二进制给计算机处理。
  + 优点:跨平台性相对较好
  + 缺点:每次执行都需要逐行翻译,执行效率相对较低。

编译方式

分布编译

  介绍一下C语言编译的过程,分为四个步骤:

  • 预处理
  • 编译
  • 汇编
  • 链接
      每个步骤执行不同的操作,需要不同的指令,分别是:
  • 预处理:将头文件展开,删除注释,宏定义替换
gcc -E xxx.c -o xxx.i
  • 编译:检查语法,将.i文件翻译成汇编文件
gcc -S xxx.i -o xxx.s
  • 汇编:将汇编文件生成目标文件
gcc -c xxx.s -o xxx.o
  • 链接:链接库文件,生成可执行文件
gcc xxx.o -o xxx

示例流程

在这里插入图片描述
  这是在终端的一个示例流程,红框中圈中的是执行的四条指令,黄框是执行指令后的文件夹中的文件。初始只有一个Test.c,最后一步生成了文件APP,注意的同学会发现,其他文件是白色,只有APP是绿色的,因为它是一个可执行的文件,类似于应用程序。
  每个指令后面的-o xxx。实际上的效果只是给生成后的文件命名,如果没有这个,编译的文件名就是默认的。

一步编译

  上面的步骤有没有觉得比较麻烦,还要记不同的指令。其实,还有另一种编译的方式,一步编译。顾名思义,只要一不就可以编译完成。下面给大家介绍以下这个语法。

gcc xxx.c -o xxx

在这里插入图片描述
  看一下是不是只要一步就生成了可执行的文件,而且中间产生的那些 .i .s .o问价你都没有了。是不是比较方便呢,前期的时候为了解整个过程,还是建议先使用分布编译,后期熟练了可以使用一步编译(其实后面可能使用集成的软件根本不需要敲指令了,比如:Vs Code)。

代码运行

  当根据上面步骤生成可执行程序时,使用执行指令或者使用装好的工具运行即可。

./xxx

运行结果展示

在这里插入图片描述

实际代码

  下面把我在这个文章中的C程序中敲的代码给大家粘贴出来,可以先试着自己运行一下。

#include <stdio.h>
int main(int argc, const char *argv[])
{printf("hello world\n");return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HandBrake :MacOS专业视频转码工具

handbrake 俗称大菠萝&#xff0c;是一款免费开源的视频转换、压缩软件&#xff0c;它几乎支持目前市面上所能见到的所有视频格式&#xff0c;并且支持电脑硬件压缩&#xff0c;是一款不可多得的优秀软件 优点 ∙Windows, Linux, Mac 三平台支持 ∙开源、免费、无广告 ∙支…

Redis-高性能原理剖析

redis安装 下载地址&#xff1a;http://redis.io/download 安装步骤&#xff1a; # 安装gcc yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下&#xff0c;并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar -zxvf redis-5.0.3.tar…

Ubuntu源码编译gdal3.6.2

在华为云申请了一台Ubuntu v18的机器,乱七八糟的不要装。 apt install build-essential pkg-config -y cmake-3.21.1 apt-get install openssl libssl-dev 过程参考&#xff1a;Yukon for PostgreSQL_格來羙、日出的博客-CSDN博客 zlib-1.2.9(不需要) 如果用系统的后面gd…

.NET 8 Video教程介绍(开篇)

教程简介 本文将简单描述视频网站教程&#xff0c;视频网站是一个类似于腾讯视频一样的网站&#xff0c;视频资源用户自己上传&#xff0c;然后提供友好的界面查看视频和搜索视频&#xff0c;并且提供管理页面对于视频进行管理&#xff0c;我们将使用Blazor作为前端&#xff0…

【Spring】SpringBoot的扩展点之ApplicationContextInitializer

简介 其实spring启动步骤中最早可以进行扩展的是实现ApplicationContextInitializer接口。来看看这个接口的注释。 package org.springframework.context;/*** Callback interface for initializing a Spring {link ConfigurableApplicationContext}* prior to being {linkpl…

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解前言MobleNet_V2讲解反向残差结构(Inverted Residuals)兴趣流形(Manifold of interest)线性瓶颈层…

Postgresql运维信息(一)

1. 运维系统视图 PostgreSQL 提供了一系列系统视图和函数&#xff0c;可以用于获取数据库的运维统计信息。这些信息对于监控和优化数据库性能非常有用。以下是一些常用的 PostgreSQL 运维统计信息&#xff1a; 1.1. pg_stat_activity 这个系统视图包含了当前数据库连接的活动…

智能驾驶汽车虚拟仿真视频数据理解(一)

赛题官网 datawhale 赛题介绍 跑通demo paddle 跑通demo torch 提交的障碍物取最主要的那个&#xff1f;不考虑多物体提交。障碍物&#xff0c;尽可能选择状态发生变化的物体。如果没有明显变化的&#xff0c;则考虑周边的物体。车的状态最后趋于减速、停止&#xff0c;时序…

Java语言基础第四天

笔记&#xff1a; Scanner接收用户输入的数据&#xff1a; package day04; import java.util.Scanner; //1.导入扫描仪 //Scanner结构的演示 public class ScannerDemo {public static void main(String[] args) {Scanner scan new Scanner(System.in); //2.新建一个扫描仪sca…

Ubuntu18.04运行gazebo的launch文件[model-4] process has died报错

启动gazebo仿真环境报错[model-4] process has died [model-4] process has died [pid 2059, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -urdf -model mycar -param robot_description __name:model __log:/root/.ros/log/8842dc14-877c-11ee-a9d9-0242a…

如何在 Vue 中使用 防抖 和 节流

在监听频繁触发的事件时&#xff0c;一定要多加小心&#xff0c;比如 用户在输入框打字、窗口大小调整、滚动、Intersection Observer 事件。 这些事件总是被频繁触发&#xff0c;可能 几秒一次。如果针对每次事件都发起 fetch 请求&#xff08;或类似的行为&#xff09;&…

ts学习04-Es5中的类和静态方法 继承

最简单的类 function Person() {this.name "张三";this.age 20; } var p new Person(); console.log(p.name);//张三构造函数和原型链里面增加方法 function Person(){this.name张三; /*属性*/this.age20;this.runfunction(){console.log(this.name在运动);} }…

redis-持久化

目录 一、RDB RDB触发保存的两种方式 优劣势总结 二、AOF AOF持久化流程&#xff1a; 1、开启AOP 2、异常恢复 3、AOF的同步频率设置 4、ReWrite压缩 5、优劣势总结 Redis 4.0 混合持久化 redis是内存数据库&#xff0c;所有的数据都会默认存在内存中&#xff0c;如…

【2024系统架构设计】 系统架构设计师第二版-未来信息综合技术

目录 一 信息物理系统 二 人工智能 三 机器人技术 四 边缘计算 五 数字孪生体

时间序列预测实战(十七)PyTorch实现LSTM-GRU模型长期预测并可视化结果(附代码+数据集+详细讲解)

一、本文介绍 本文给大家带来的实战内容是利用PyTorch实现LSTM-GRU模型&#xff0c;LSTM和GRU都分别是RNN中最常用Cell之一&#xff0c;也都是时间序列预测中最常见的结构单元之一&#xff0c;本文的内容将会从实战的角度带你分析LSTM和GRU的机制和效果&#xff0c;同时如果你…

kubernetes v1.24.7 + docker

1. 背景 采用containerd作为容器运行时发现集群总是不稳定&#xff0c;因此切换成了docker 作为容器运行时&#xff1b; rootorangepi3b:~# uname -a Linux orangepi3b 5.10.160-rockchip-rk356x #1.0.2 SMP Thu Sep 21 17:07:22 CST 2023 aarch64 aarch64 aarch64 GNU/Linux…

论文导读 | 大语言模型与知识图谱复杂逻辑推理

前 言 大语言模型&#xff0c;尤其是基于思维链提示词&#xff08;Chain-of Thought Prompting&#xff09;[1]的方法&#xff0c;在多种自然语言推理任务上取得了出色的表现&#xff0c;但不擅长解决比示例问题更难的推理问题上。本文首先介绍复杂推理的两个分解提示词方法&a…

【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个带头双向循环链表: 该带头双向循环链表使用动态内存分配空间,可以用来存储任意数量的同类型数据. 带头双向循环链表结点(No…

Windows 安装 Docker Compose

目录 前言什么是 Docker Compose &#xff1f;安装 Docker Compose配置环境变量结语开源项目 前言 在当今软件开发和部署领域&#xff0c;容器化技术的应用已成为提高效率和系统可移植性的关键手段。Docker&#xff0c;作为领先的容器化平台&#xff0c;为开发人员提供了轻松构…

2023 极术通讯-汽车“新四化”路上,需要一片安全山海

导读&#xff1a;极术社区推出极术通讯&#xff0c;引入行业媒体和技术社区、咨询机构优质内容&#xff0c;定期分享产业技术趋势与市场应用热点。 芯方向 【Armv9】-动态TrustZone技术的介绍 动态 TrustZone 是提供多租户安全媒体 pipeline 的绝佳工具。完全不受操作系统、虚…