(一)C语言概述

文章目录

  • 一、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调试

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

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

相关文章

css新闻链接案例

利用html和css构建出新闻链接案例&#xff0c;使用渐变色做出背景色变化 background: linear-gradient(to bottom, rgb(137, 210, 251), rgb(238, 248, 254), white); 利用背景图片&#xff0c;调整位置完成 dd { height: 28px; line-height: 28px; background-image: url(./图…

10.30 作业 C++

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std;clas…

Discuz论坛自动采集发布软件

随着网络时代的不断发展&#xff0c;Discuz论坛作为一个具有广泛用户基础的开源论坛系统&#xff0c;其采集全网文章的技术也日益受到关注。在这篇文章中&#xff0c;我们将专心分享通过输入关键词实现Discuz论坛的全网文章采集&#xff0c;同时探讨采集过程中伪原创的发布方法…

springboot+jsp+java房屋销售出租赁网站的ssm设计与实现7xcvq

三、研究方案&#xff08;主要研究内容、目标、研究方法等&#xff09; 主要研究内容 房屋租售网站采用的开发框架为springboot框架&#xff0c;也就是Spring mvc、Spring、MyBatis这三个框架&#xff0c;页面设计用的是jsp技术作为动态页面文件设计&#xff0c;jsp文件里可以对…

Glove学习笔记

global vectors for word representation B站学习视频 1、LSA与word2vec 我们用我们的见解&#xff0c;构建一个新的模型&#xff0c;Glove&#xff0c;全局向量的词表示&#xff0c;因为这个模型捕捉到全局预料的统计信息。 LSA:全局矩阵分解word2vec&#xff1a;局部上下文…

第一百八十五回 如何禁止页面跟随手机自动旋转

文章目录 1. 概念介绍2. 使用方法2.1 全面禁止2.2 局部禁止3. 示例代码4. 内容总结我们在上一章回中介绍了"如何自定义Radio组件"相关的内容,本章回中将介绍 如何禁止页面随手机自动旋转.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在手机默认设置下,手机…

系统渗透-lin20230502(解析+环境)

B-5&#xff1a;系统渗透&#xff1a; 仅能获取lin20230502的IP地址 1.在渗透机中对服务器主机进行信息收集&#xff0c;将服务器开启的端口号作为Flag值提交&#xff1b; 2.在渗透机中对服务器主机进行渗透&#xff0c;在服务器主机中获取服务器主机名称&#xff0c;将主机名作…

Python实验项目8 :科学计算与可视化

1&#xff1a;创建 numpy 数组。 要求&#xff1a; &#xff08;1&#xff09;使用 array()函数、empty()函数、zeros()函数、linspace()函数等创建 numpy 数组。 &#xff08;2&#xff09;使用 numpy 数组的索引和切片方法访问数组元素。 # 要求&#xff1a; # &#xff0…

SSM校园组团平台系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 校园组团平台系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

pycharm 创建vue并实现简易路由功能

使用pycharm创建vue项目时&#xff0c;选择vite来创建vue。为什么使用vite&#xff1f;因为vite是专门针对vue开发的打包框架&#xff0c;以前使用vue-cli来创建vue项目&#xff0c;就是使用的webpack来进行打包的&#xff0c;现在有了vite&#xff0c;就尽量使用vite来创建vue…

菜鸟学习日记(Python)——基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。 在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 等号&#xff08;&#xff09;用来…

nginx 配置前端项目添加https

可申请阿里云免费证书 步骤省略… nginx 配置 server {listen 8050; #默认80端口 如果需要所有访问地址都是https 需要注释listen 8443 ssl; #https 访问的端口 &#xff0c;默认443server_name 192.168.128.XX; #域名 或 ip# 增加ssl#填写证书文件…

Informer辅助笔记:data/dataloader.py

以WTH为例 import os import numpy as np import pandas as pdimport torch from torch.utils.data import Dataset, DataLoader # from sklearn.preprocessing import StandardScalerfrom utils.tools import StandardScaler from utils.timefeatures import time_featuresim…

2023_Spark_实验二十三:Kafka的安装与基本操作

Kafka的安装与基本操作 一、前提工作 二、Kafka安装 三、Kafka基本操作 一、前提工作 必须安装了zookeeper 单机可参考&#xff1a;zookeeper单机安装与配置 集群可参考&#xff1a;zookeeper的集群安装 二、Kafka安装 上传kafka_2.11-2.4.1.tgz到/tools目录下 解压安装到…

中台战略思想与架构总结

中台战略思想与架构总结 在2015年年中&#xff0c;马云带领阿里高管&#xff0c;拜访了游戏公司Supercell&#xff0c;以《部落战争》《海岛奇兵》《卡通农场》等游戏知名。 Supercell是一家典型的以小团队模式进行游戏开发的公司&#xff0c;一般来说两个员工&#xff0c;或…

单链表相关经典算法OJ题:移除链表元素

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 题目&#xff1a;移除链表元素 解法一&#xff1a; 解法一的代码实现&#xff1a; 解法二&#xff1a; 解法二代码的实现&#xff1a; 总结 前言 世上有两种耀眼的…

3D模型渲染导致电脑太卡怎么办?

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 1、什么是3D渲染&#xff1f; 3D渲染是指通过计算机图形学技术将三维模型转化为二维图像的过程…

【UGUI】实现背包的常用操作

1. 添加物品 首先&#xff0c;你需要一个包含物品信息的类&#xff0c;比如 InventoryItem&#xff1a; using UnityEngine;[CreateAssetMenu(fileName "NewInventoryItem", menuName "Inventory/Item")] public class InventoryItem : ScriptableObje…

No matching version found for @babel/compat-data@^7.23.5 处理

npm ERR! notarget No matching version found for babel/compat-data^7.23.5 处理 报错信息 npm WARN ERESOLVE overriding peer dependency npm ERR! code ETARGET npm ERR! notarget No matching version found for babel/compat-data^7.23.5. npm ERR! notarget In most …

你好!线性查找【JAVA】

1.初次相识 线性查找也称线性搜索&#xff0c;是一种简单的查找方式&#xff0c;它是按照元素在数据集合中出现的顺序逐个进行比较&#xff0c;直到找到目标元素或查找完整个集合为止。具体实现方式是从集合的第一个元素开始遍历&#xff0c;逐个比较每个元素与目标元素是否相等…