(一)C语言概述

news2024/11/22 14:48:25

文章目录

  • 一、C语言
    • 1、计算机结构组成
  • 二、第一个C语言程序:hello world
    • 1、编写C语言代码:hello.c
    • 2、通过gcc编译C代码
      • (1)gcc编译器介绍
      • (2)Window平台中gcc环境配置
    • 3、代码分析
      • (1)#include <stdio.h>与#include "stdio.h"区别
      • (2)main函数
      • (3){}括号,程序体和代码块
      • (4)注释
      • (5)printf()函数
      • (6)return 0
  • 三、system函数
    • 1、system函数的使用
  • 四、C语言编译过程
    • 1、C语言编译步骤
      • (1)预处理:
      • (2)编译
      • (3)汇编
      • (4)链接
  • 五、visual studio的快捷键

一、C语言

  语言是用来交流沟通的,有一方说,有一方听,必须有两方参与,这就是语言最重要的功能。

  • 说的一方传递信息,听的一方接收信息;
  • 说的一方下达命令,听的一方遵循命令做事情
      语言是任何人交流,C语言是人与机器交流。

1、计算机结构组成

在这里插入图片描述

二、第一个C语言程序:hello world

1、编写C语言代码:hello.c

#include <stdio.h>
int main()
{
	// 这是第一个C语言代码
	printf("hello, world!\n");
	return 0;
}

  C语言的源代码文件是一个普通的文本文件,但是扩展名必须是.c

2、通过gcc编译C代码

(1)gcc编译器介绍

  编译器(如vim,记事本等)是指我们用它来写程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转换成电脑能懂的语句,编译器就是这样的转换工具。也就是说,我们用编辑器编写程序,由编译器编译后才能运行!
  编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。
  gcc原本作为GNB操作系统的官方编译器,现在已经被大多数类Unix操作系统采纳为标注你的编译器,gcc同样适用于微软的windows。
  编译命令格式:
gcc [-option1] ... <filename>
g++ [-option2] ... <filename>

  • 命令、选项和源文件之间使用空格分隔。
  • 一行命令中可以有0个、一个或多个选项
  • 文件名可以包含文件的绝对路径,也可以使用相对路径
  • 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名。如a.exe,a.out等。

(2)Window平台中gcc环境配置

  • 直接进入QT安装目录,如我们路径为:Z:\Qt\Tools\mingw1120_64,将其添加至环境变量。
  • 输入cmd,进入命令提示行,在里面输入gcc -v
    如果出现一下画面,就表示gcc可以正常使用。
    在这里插入图片描述

3、代码分析

  • include头文件包含,#include <stdio.h>代表包含stdio.h这个头文件
  • 使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,则就需要包含stdio.h头文件
  • 可以通过man 3 printf查看printf头文件——linux系统中。

(1)#include <stdio.h>与#include "stdio.h"区别

  <>表示系统直接按系统指定的目录检索。
  ""表示系统现在""指定的路径查找头文件,如果找不到,再按系统指定的目录检索。

(2)main函数

  • 一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成。
  • main函数是C语言程序的入口,程序是从main 函数开始执行

(3){}括号,程序体和代码块

  • {}叫做代码块,一个代码块内部可以有一条或者多条语句。
  • C语言每句可执行代码都是";"分好结尾。
  • 所有由#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
  • 所有可执行语句必须在代码块中

(4)注释

  • //叫做行注释
  • /**/叫做块注释
#if 0
#endif

(5)printf()函数

  • 是C语言库函数,是向标注输出设备输出一个字符串
  • printf("hello, world!\n");

(6)return 0

三、system函数

1、system函数的使用

#include <stdlib.h>
int system(const char *command);

函数功能:在已经运行的程序中执行另外一个外部程序
参数:外部可执行程序名字
返回值:
  成功:0
  失败:任意数字
示例代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	system("cls");
	return 0;
}

四、C语言编译过程

1、C语言编译步骤

  C语言编译成可执行程序经过4步:

(1)预处理:

  宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法。
  可以通过gcc工具实现
gcc -E hello.c -o hello.i
  生成的是.i文件。

预处理过程的作用有几个,分别是:
(1)完成头文件展开
(2)宏定义替换
(3)替换注释
(4)展开条件编译

(2)编译

  会逐行检查语法错误,将代码翻译成汇编语言。

(3)汇编

  作用是将汇编语言翻译成二进制语言。

(4)链接

  实现的功能有几个:

(1)数据段合并
(2)数据地址回填
(3)库引入

五、visual studio的快捷键

快捷键含义
Ctrl + k,Ctrl + f自动格式化代码
Ctrl + k,Ctrl + c注释代码
Ctrl + k,Ctrl + u取消注释代码
F9设置断点
F5设置断点
Ctrl + F5不调试运行
Ctrl + Shift + b编译,不运行
F10next调试
F11step调试

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

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

相关文章

基础课14——语音识别

ASR 是自动语音识别&#xff08;Automatic Speech Recognition&#xff09;的缩写&#xff0c;是一种将人类语音转换为文本的技术。ASR 系统可以处理实时音频流或已录制的音频文件&#xff0c;并将其转换为文本。它是一种自然语言处理技术&#xff0c;广泛应用于许多领域&#…

C++ :运算符重载

运算符重载&#xff1a; 运算符重载概念&#xff1a;对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型 运算符的重载实际是一种特殊的函数重载&#xff0c;必须定义一个函数&#xff0c;并告诉C编译器&#xff0c;当遇到该重载的运算符…

每日一练2023.11.30——验证身份【PTA】

题目链接 &#xff1a;验证身份 题目要求&#xff1a; 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&a…

万界星空科技/仓库管理WMS系统/免费仓库管理系统

仓库管理&#xff08;仓储管理&#xff09;&#xff0c;指对仓库及仓库内部的物资进行收发、结存等有效控制和管理&#xff0c;确保仓储货物的完好无损&#xff0c;保证生产经营活动的正常进行&#xff0c;在此基础上对货物进行分类记录&#xff0c;通过报表分析展示仓库状态、…

HarmonyOS4.0 ArkUI组件

目录 简介 搭建开发环境 ArkUI基础组件 Image组件 Text组件 TextInput Button Slider 简介 HarmonyOS 4.0的ArkUI组件是一套UI开发框架&#xff0c;提供开发者进行应用UI开发时所必须的能力。在ArkUI中&#xff0c;组件是界面搭建与显示的最小单位&#xff0c;开发者通过…

传统算法:使用 Pygame 实现线性查找

使用 Pygame 模块实现了线性查找的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过线性查找算法对数组进行查找,动画效果可视化每一步的变化。在查找的过程中,程序逐个遍历数组元素,如果找到目标值,将相应的元素高…

java-Swing界面简析

一、简析&#xff1a; 调用java提供的 java.swing包下的各种类可以实现界面中的各种组件(比如输入框、密码框按钮、单选框、复选框等) 二、java.swing包的关键类&#xff1a; 顶层容器&#xff1a;Jframe(窗口) 中间容器&#xff1a;Jpanel(面板) 基本控件&#xff1a; I…

java开发之个微群聊自动添加好友

请求URL&#xff1a; http://域名/addRoomMemberFriend 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wId是String登录实例标识chatRoom…

【数据分析 | Numpy】Numpy模块系列指南(一),从设计架构说起

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

Springboot快速整合kafka

kafka的基本了解 kafka也是 目前常用的消息中间件,支持同步与异步通信,和rabbitmq一样,工作模式大概相同,并且被spingboot整合的后的都是 中间件Template的实列化客户端类 ,消费者监听注解为KafkaListener,和RabbitListener和很相似,这些消息中间件使用过后,发现大致都是相同的…

【Node.js】解决npm报错:RequestError: unable to verify the first certificate

1. 问题简述 帖主从nodejs官网下载安装nodejs后&#xff0c;发现使用以下命令安装electron会报错&#xff1a; npm install electron 报错信息如下&#xff1a; npm ERR! RequestError: unable to verify the first certificate 2. 解决方案 网上列举的方案&#xff0c;无…

【刷题笔记】串联所有单词的子串||暴力通过||滑动窗口

串联所有单词的子串 1 题目描述 https://leetcode.cn/problems/substring-with-concatenation-of-all-words/ 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 …

PGSQL(PostgreSQL)数据库安装教程

安装包下载 下载地址 下载后点击exe安装包 设置的data存储路径 设置密码 设置端口 安装完毕&#xff0c;配置PGSQL的ip远程连接&#xff0c;pg_hba.conf&#xff0c;postgresql.conf&#xff0c;需要更改这两个文件 pg_hba.conf 最后增加一行 host all all …

如何计算数据泄露的成本

现在&#xff0c;几乎所有类型的组织每天都在发生企业 IT 网络遭到破坏的情况。它们是任何合规官员最担心的问题&#xff0c;并且找出更好的方法来防止它们或从中恢复是合规官员永远不会远离的想法。 但数据泄露的实际成本是多少&#xff1f;该数字从何而来&#xff1f;当您获…

手动将jar包导入本地Maven仓库

1、进入存放jar包的目录&#xff0c;可以先放进仓库底下 2、cmd回车 3、执行命令&#xff0c;看到BUILD SUCCESS就是成功了 -DgroupId、-DartifactId、-Dversion、-Dfile记得换成自己对应的 mvn install:install-file -DgroupIdcom.github.03 -DartifactIdonvif -Dversion1.0.7…

Linux基础操作三:Linux操作命令-目录文件操作

1、关机和重启 关机shutdown -h now 立刻关机shutdown -h 5 5分钟后关机poweroff 立刻关机 重启shutdown -r now 立刻重启shutdown -r 5 5分钟后重启reboot 立刻重启 2、帮助 --help命令shutdown --help&#xff1a;…

kubernetes(k8s)容器内无法连接同所绑定的Service ClusterIP问题记录

kubernetes(k8s)容器内无法连接同所绑定的Service ClusterIP问题记录 1. k8s环境 k8s使用kubernetes-server-linux-amd64_1.19.10.tar.gz 二进制bin 的方式手动部署 k8s 版本: [rootmaster ~]# kubectl version Client Version: version.Info{Major:"1", Minor:&…

掌握区块链技术将推进2024年市场发展脚步

1.高收入潜力 精通区块链的人才通常享有超过全国平均水平的薪酬&#xff0c;这也反映了对于专业技能的需求正在迅速增长。无论你选择成为这个领域哪一块业务的人员&#xff0c;掌握区块链技能均可以显著提升你的收入。 2.职业多样性 无论你目前从事什么职业&#xff0c;都可…

前端项目环境的搭建

一、下载并且安装Node&#xff08;不安装node&#xff0c;就安装nvm。nvm安装教程&#xff09;&#xff1a; 1.官网下载Node&#xff1a;https://nodejs.org/en/ 2.测试nodejs安装是否成功&#xff1a; 在windows powerShell中输入node -v 和 npm -v&#xff0c;看到版本号就…

WordPress批量上传文章和自动发布文章的方法

专业介绍&#xff1a;WordPress批量上传文章技术解析 在现代数字时代&#xff0c;内容创作是网络存在的驱动力之一。对于博客作者、新闻编辑和内容管理员而言&#xff0c;高效地批量上传文章至WordPress平台是提高工作效率的一个关键方面。WordPress作为最受欢迎的内容管理系统…