C语言入门:打开编程世界的大门

news2024/11/25 7:11:47

一.C语言是什么

在我们生活中,我们在交流时候使用的就是语言,在这个世界上有许多的国家、民族,自然也有很多语言如:汉语、英语、法语等等,这种人与人交流使用的语言我们称为自然语言。然而计算机并不能理解我们的语言,这时候就有人发明了如:Python,C++,JAVA等计算机语言。C语言便是其中最具有代表性之一的语言。

二.C语言的历史

这里不需要注意太多内容,只需要知道如下一点:

在C语言的历史上一共有三次比较大的改变,分别为:[C89标准],[C99标准]),[C11标准]

三.编译与链接

3.1 编译链接的过程

C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件(txt文件),⽂本⽂件本⾝⽆法执⾏,必须通过编译器编译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。

  • 每个源文件经过编译器处理生成对应的目标文件(.obj)
  • 多个目标文件和库文件经过连接器链接后生成可执行程序(.exe)
  • 详细的编译过程,会有一门被称为编译原理的课程专门传授。

我们在这里要知道的是,编译器的作用是:预处理+编译+汇编、链接器的作用是汇编。

这里我们暂时不介绍预处理阶段,然后简单介绍一下编译和汇编阶段。

简而言之,编译是将高级语言变成汇编语言,汇编是将汇编语言变成机器语言。

下面给大家介绍一下高级语言、汇编语言、机器语言。

机器语言、汇编语言和高级语言是计算机编程中的三种不同层次的语言,各自的抽象程度和与硬件的交互方式有所不同。

2. 机器语言(Machine Language)

  • 定义: 机器语言是计算机直接理解和执行的语言,由二进制数(0 和 1)组成。
  • 特点:
    • 完全由二进制指令构成,最底层,难以阅读和编写。
    • 与处理器架构紧密相关,不同硬件有不同的机器语言。
    • 执行效率最高,因为没有中间的翻译步骤。

例子:

              10110000 01100001 (将 97 放入寄存器)

3. 汇编语言(Assembly Language)

  • 定义: 汇编语言是机器语言的低级别抽象,用助记符代替二进制指令,帮助程序员更容易编写和理解代码。
  • 特点:
    • 使用助记符(如 MOVADD)表示指令,较机器语言更具可读性。
    • 需要汇编器将汇编代码翻译成机器语言。
    • 与硬件密切相关,每种处理器都有自己的汇编语言。

例子:

       MOV AL, 61h (将 97 放入 AL 寄存器)

4. 高级语言(High-level Language)

  • 定义: 高级语言是一种抽象程度更高的编程语言,接近自然语言或数学表达式,远离底层硬件。
  • 特点:
    • 易于编写、阅读和维护,面向问题的解决方案,而非硬件。
    • 与平台无关,通常通过编译器或解释器转换为机器语言。
    • 常见的高级语言有 C、C++、Java、Python 等。

例子:

int a = 97; (声明一个整型变量并赋值 97) 

5.总结

  • 机器语言: 最低级别的语言,直接与硬件交互,二进制表示。
  • 汇编语言: 机器语言的符号化抽象,仍然与硬件紧密相关。
  • 高级语言: 更抽象、接近人类语言,易于使用,与硬件无关。

四.集成开发环境

集成开发环境,被称为IDE。

IDE是用于提供程序开发环境的应用。

其一般包括代码编辑器、编译器、调试器和图形化界面。

其中,编辑器是让你编代码的,编译器是用来编译的。

调试器是用来调试的,图形化界面是能让你看到。

这里我建议大家使用vs2022,因为我用的是这个。

五.C语言项目的建立

1.双击vs2022

2.双击创建新项目

3.单击空项目+下一步或者双击空项目

4.在解决方案资源管理器中找到:源文件->添加->新建项

5.选择cpp文件,修改文件后缀为.c

6.点击添加,完成项目创建。

六.你好,世界!

现在我们来打出人生的第一个程序。

#include<stdio.h>
int main()
{
	printf("hello world");
	return 0;
}

输出结果:hello world

  1. 每个C语言都是从main函数开始执行的,main函数是程序的入口,main函数也被叫做主函数。
  2. main函数前面的int表示函数的返回值,return表示返回,因此我们最后返回了0.
  3. printf是一个库函数,它可以帮助我们打印语句。
  4. C语言每条语句结束后都要加英文分号(;),表示语句的结束。

下面我们来介绍字符

六.字符和ASCII表

6.1 什么是字符

像‘a’,‘b’,‘c’,‘1’,‘#’ 等由单引号引起来的东东,我们称为字符

ps:重点是单引号,单引号里面只能引一个。

6.2转义字符

而在字符中有一种特殊的字符,比如‘\n’(换行),‘\0’(null),这些特殊的字符,我们称它为转义字符,并且每一个转移字符都有特殊含义。下面是一些常见的转义字符及其含义。

我认为,这一大堆里面我们只需要会用\n、\\以及\'就足够了。

6.3ASCII码

我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些a’,‘b’,'@'字符在内存中分别以什么样的⼆进制存储的呢?

所以有人为它们每个字符都编了个二进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了ASCII编码的⽅式。

  • 字符A-Z的ASCII码是65-90
  • 字符a-z的ASCII码为97-122
  • 对应的大小写字符的ASCII码值的差值是32
  • 数字字符0-9的ASCII码值是48-57
  • ASCII码值从0~31这32个字符是不可打印字符,⽆法打印在屏幕上观察

练习:小写转大写

	printf("%c\n", 'Q');
	printf("%c\n", 81);

展示:打印出全部可打印字符

	for (i = 32; i <= 127; i++)
	{
		printf("%c ", i);
		if (i % 16 == 15)
		{
			printf("\n");
		}
	}

7.1 字符串
 

使⽤双引号括起来的⼀串字符就被称为字符串,如“abcd”,“1234”,但是和字符不同的是,字符串会在结尾默认加个’\0’,作为其结束标志。


	printf("hello world");
	puts("hello world");

\0样例:

printf("zcxv\0sdaf");

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

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

相关文章

github下载文件的两种方式(非git形式)

1.以下面的图为例 &#xff0c;可以直接点击右上方的绿色Code按键&#xff0c;在弹出的列表中选择Download Zip选项&#xff0c;即可下载。 2.如果下载的是单独的某一个文件&#xff0c;则可以按照下图的格式点击下图所示的那个下载的图标即可。

【Linux系统编程】第三十一弹---深入理解静态库:从零开始制作与高效使用的完全指南

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、静态库 1.1、怎么做静态库 1.2、怎么使用静态库 1、静态库 1.1、怎么做静态库 在Linux环境下&#xff0c;通常使用GCC&am…

【2024最新】基于springboot+vue的实验室管理系统lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

PAT甲级-1034 Head of a Gang

题目 题目大意 一个犯罪团伙满足条件&#xff1a;人数 > 2&#xff1b;团伙内的总通话时长 > k。团伙首领就是该团伙中通话时长最多的。先给定一组通话&#xff0c;格式为 A B time&#xff0c;要求输出犯罪团伙的数目&#xff0c;并输出每个团伙的首领名字和该团伙的人…

一文详解数据库范式

背景 在开发中&#xff0c;我们经常需要考虑如何设计合适的表结构&#xff0c;而则往往需要考虑数据库的范式。数据库的三范式&#xff08;3NF&#xff09;是数据库设计过程中用来减少数据冗余和提高数据一致性的重要规则。它们分别是第一范式&#xff08;1NF&#xff09;、第二…

【PR小技巧】PR技术分享 一 PR关键帧小技巧介绍

在Adobe Premiere Pro (简称PR) 中&#xff0c;关键帧是用于控制视频剪辑、音频轨道、效果动画等随时间变化的重要工具。通过合理使用关键帧&#xff0c;可以实现各种复杂的动画效果和精确的时间控制。今天我们就来学习一些关于关键帧的小技巧&#xff0c;以及具体的例子来说明…

算法专题五: 位运算

目录 常见位运算总结1. 位1的个数2. 比特位计数3. 汉明距离4. 只出现一次的数字5. 只出现一次的数字Ⅲ6. 判定字符是否唯一7. 丢失的数字8. 两正数之和9. 只出现一次的数字Ⅲ10. 消失的两个数字 常见位运算总结 重点 : 1. 位1的个数 算法思路: 这道题就用到了我们总结的那个第…

全新YOLOv11美化版检测界面 涵盖超多功能 支持百种模型改进训练

文章目录 前言视频效果必要环境一、界面功能概述1. 运行方法2. 图像选择图像:表格信息:统计信息:IOU和NMS调节:目标框显示: 3. 文件夹选择文件夹:进度显示:推理结果: 4. 视频、摄像头进度显示:实时检测:帧状态回溯: 5. 替换界面中的模型5. 鼠标悬浮 二、训练改进模型运行方法假…

力扣周赛:第419场周赛

&#x1f468;‍&#x1f393;作者简介&#xff1a;爱好技术和算法的研究生 &#x1f30c;上期文章&#xff1a;力扣周赛&#xff1a;第415场周赛 &#x1f4da;订阅专栏&#xff1a;力扣周赛 希望文章对你们有所帮助 因为一些特殊原因&#xff0c;这场比赛就打了1h&#xff0c…

[Linux] Linux 模拟实现 Shell

标题&#xff1a;[Linux] Linux 模拟实现 Shell 个人主页水墨不写bug&#xff08;图片来源于网络&#xff09; 目录 一、什么是shell 二、shell的理解 三、模拟实现shell 1&#xff09;打印命令行提示 2&#xff09;获取用户的输入字符串 3&#xff09;分割命令字符串 4…

【优选算法篇】双指针的优雅舞步:C++ 算法世界的浪漫探索

文章目录 C 双指针详解&#xff1a;基础题解与思维分析前言第一章&#xff1a;对撞指针1.1 移动零解题思路图解分析C代码实现易错点提示代码解读 1.2 复写零解题思路算法步骤C代码实现易错点提示代码复杂度 1.3 盛最多水的容器1. 题目链接2. 题目描述解法一&#xff08;暴力求解…

链表(4)_合并K个升序链表_面试题

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 链表(4)_合并K个升序链表_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录…

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1&#xff08;组合数学&#xff09;解题思路2&#xff08;暴力枚举&#xff09; 2.小球反弹做题思路 3.好数算法思路&#xff08;暴力解法&#xff09;---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…

【Oracle数据库进阶】001.SQL基础查询_查询语句

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…

Egg考古系列-EggCore的生命周期

关于EGG egg框架的第一个版本还是2017-03-21&#xff0c;距今已有7年了。虽然最近几年没有什么更新&#xff0c;但它在国内的使用还是挺多的&#xff0c;mvc的分层模式也很受大家喜欢。虽然声称是面向企业级、中大型项目场景的框架&#xff0c;但这种约定式在大型项目中其实也很…

高校学科竞赛管理:SpringBoot实现的高效策略

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【M2-Mixer】核心方法解读

abstract&#xff1a; 在本文中&#xff0c;我们提出了M2-Mixer&#xff0c;这是一种基于MLPMixer的结构&#xff0c;具有多头损失&#xff0c;用于多模态分类。它比基于卷积、循环或神经结构搜索的基线模型具有更好的性能&#xff0c;其主要优势是概念和计算简单。所提出的多…

【电子电力】LCL滤波器设计,包括电流控制调谐

摘要 LCL 滤波器是电力电子领域中广泛应用于并网逆变器的滤波器之一&#xff0c;其主要功能是减少高频开关的谐波&#xff0c;确保输出电流的质量。本文设计并实现了基于 MATLAB 的 LCL 滤波器模型&#xff0c;结合电流控制器和调谐技术&#xff0c;验证了其在谐波抑制方面的效…

从RNN讲起(RNN、LSTM、GRU、BiGRU)——序列数据处理网络

文章目录 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09;1. 什么是RNN&#xff1f;2. 经典RNN的结构3. RNN的主要特点4. RNN存在问题——长期依赖&#xff08;Long-TermDependencies&#xff09;问题 LSTM&#xff08;Long Short-Term Memory&a…

PostgreSQL学习笔记七:常规SQL操作

PostgreSQL 支持标准的 SQL 语句&#xff0c;同时也扩展了一些特有的功能。以下是一些常规的 SQL 语句示例&#xff0c;这些示例涵盖了数据定义、数据操作和数据查询的基本操作&#xff1a; 数据定义语言 (DDL 创建数据库&#xff1a; CREATE DATABASE mydatabase;创建表&#…