C语言初步介绍(初学者,大学生)【上】

news2024/11/25 7:12:37

1.C语⾔是什么?

⼈和⼈交流使⽤的是⾃然语⾔,如:汉语、英语、⽇语
那⼈和计算机是怎么交流的呢?使⽤ 计算机语⾔
⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机⼯作的。
C语⾔就是众多计算机语⾔中的⼀种,当然C++/Java/Go/Python都是计算机语⾔。

2.C语⾔的历史和辉煌

C 语⾔最初是作为 Unix 系统的开发⼯具⽽发明的。

3.编译器的选择VS2022

        3.1编译和链接

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

C语⾔代码是放在 .c 为后缀的⽂件中的,要得到最终运⾏的可执⾏程序,中间要经过编译和链接2个 过程。

注意:⼀个⼯程⼀般都会有多个源⽂件组成,

1. 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)
2. 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)

3.2编译器的对⽐

C语⾔是⼀⻔编译型的计算机语⾔,需要依赖编译器将计算机语⾔转换成机器能够执⾏的机器指令。
那我们常⻅的C语⾔编译器都有哪些呢?
⽐如:msvc、clang、gcc 就是⼀些常⻅的编译器,当然也有⼀些集成开发环境 如:VS2022、
XCode、CodeBlocks、DevC++、Clion 等。
集成开发环境(IDE)⽤于提供程序开发环境的应⽤程序,⼀般包括代码编辑器、 编译器 、 调试器
和 图形⽤⼾界⾯ 等⼯具。 集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软 件服务套。
VS2022 集成了MSVC(安装报包较⼤⼀些,安装简单,⽆需多余配置,使⽤起来⾮常⽅便)
XCode 集成了clang(苹果电脑上的开发⼯具)
CodeBlocks 集成了gcc(这个⼯具⽐较⼩众,需要配置环境)
DevC++ 集成了gcc(对于代码⻛格的养成不好,⼀些竞赛使⽤)
Clion 是默认使⽤CMake,编译器是可以配置的(⼯具是收费,所以暂时推荐⼤家使⽤)

3.3VS2022 的优缺点

优点:
  • VS2022 是⼀个主流的集成开发环境,企业中使⽤较为普遍
  • VS2022 包含了:编辑器+编译器+调试器,功能强⼤
  • 直接安装即可使⽤,基本不⽤额外配置环境,上⼿容易
  • 默认界⾯是中⽂的,初学者友好
缺点:
  • 功能丰富,安装包⼤,占⽤空间多。

4.VS项⽬ 和 源⽂件、头⽂件介绍

在VS上写代码,我们是需要创建项⽬的,直接新建项⽬就可以了。
在项⽬中就可以添加源⽂件和头⽂件。
C语⾔把 .c 为后缀的⽂件称为源⽂件,把 .h 为后缀的⽂件称为头⽂件。

5.第⼀个C语⾔程序

#include <stdio.h>

int main()
{
    printf("hello,world\n");
    return 0;
}
这⾥演⽰VS2022中创建项⽬和编写C代码的过程,并运⾏出结果。
在VS2022上运⾏代码的快捷键: Ctrl+f5

6.main函数

每个 C 语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝,
main 函数也被叫做:主函数。 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类
型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。
  • main函数是程序的⼊⼝
  • main函数有且仅有⼀个
  • 即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)

第⼀次写代码,⼀些常⻅的错误总结:

main 被写成了mian
main后边的()漏掉了
代码中不能使⽤中⽂符号,⽐如括号和分号
⼀条语句结束后,有分号

7.printf和库函数

在上⾯的代码中有⼀句代码如下:
printf("hello,world!\n");
代码中使⽤了 printf 函数,实现了在屏幕上的信息的打印。
这⾥简单的介绍⼀下 printf printf 是⼀个 库函数 ,它的功能是在标准输出设备(⼀般指屏
幕)上进⾏信息的打印。上⾯的代码是使⽤ printf 函数打印字符串。只要把想要打印的⼀串字符放
在双引号中并传递给printf函数就可以打印。
printf函数也可以⽤来打印其他类型的数据,⽐如:
int a = 100;
printf("%d\n,a");        //printf打印整形
printf("%c\n",'q');      //printf打印字符
printf("%lf\n",3.14);    //printf打印双精度浮点型
这⾥的 %d , %c 等是占位符,会被后边的值替换。(后面会介绍的)
同时我们在使⽤库函数的时候,是需要包含头⽂件的,⽐如: printf 函数需要包含的就是
stdio.h 这个头⽂件,具体的⽅法就是:
#include <stdio.h>

那什么是库函数呢?

为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不
同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准
库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函 数其他编译器不⼀定⽀持)。
⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。
库函数⽐较多,后期慢慢来介绍,提前了解可参考链接: https://cplusplus.com/reference/clibrary/

8.关键字介绍

C语⾔中有⼀批保留的名字的符号,⽐如: int if return ,这些符号被称为保留字或者关键 字。
  • 关键字都有特殊的意义,是保留给C语⾔使⽤的
  • 程序员⾃⼰在创建标识符的时候是不能和关键字重复的
  • 关键字也是不能⾃⼰创建的。
C语⾔的32个关键字如下:
1 auto break case char const continue default do double else enum 
extern
2 float for goto if int long register return short signed sizeof
 static
3 struct switch typedef union unsigned void volatile while
⼀些关键字⼤家可以去了解⼀下,不过使⽤最多的还是上⾯的32个关键字。
注: https://zh.cppreference.com/w/c/keyword (C语⾔所有关键字的介绍)

9.字符和ASCII编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号
括起来的,如:'a','b','@'。
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆ 进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为 了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C
语⾔中的字符就遵循了 ASCII 编码的⽅式。
参考: https://zh.cppreference.com/w/cpp/language/ascii
我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数据:
  • 字符A~Z的ASCII码值从65~90
  • 字符a~z的ASCII码值从97~122
  • 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
  • 数字字符0~9的ASCII码值从48~57
  • 换⾏ \n 的ASCII值是:10
  • 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察
单个字符的打印可以使⽤%c来指定格式:
#include <stdio.h>

int main()
{
    printf("%c\n",'Q');
    printf("%c\n",81);    //这里的81是字符Q的ASCII码值,也是可以正常打印的
    return 0;
}

可打印字符展示:

#include <stdio.h>
int main()
{
    int i = 0;
    for (i = 32; i <= 127; i++)
    {
        printf("%c ", i);
        if (i % 16 == 15)
            printf("\n");
    }
    return 0;
}

10.字符串和\0

C语⾔中如何表⽰字符串呢?使⽤双引号括起来的⼀串字符就被称为字符串,如:"abcdef",就是⼀个 字符串。
字符串的打印格式可以使⽤ %s 来指定,也可以直接打印如下:
#include <stdio.h>
int main()
{
    printf("%s\n", "hello C");
    printf("hello c");
    return 0;
}
C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串 的结束标志。

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

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

相关文章

【AIGC产品经理】面试7家,拿到2个offer,薪资中上水平

Hello&#xff0c;大家好&#xff0c;我是一名不知名的5年B端金融产品经验的产品经理&#xff0c;成功转行AI产品经理&#xff0c;前期面试了北京百度、阿里、理想汽车、百川智能、华为、OPPO等多家大厂面试&#xff0c;但是由于已定居成都&#xff0c;主动终止了后续需要线下的…

ubuntu 系统安装

使用VMware虚拟机上进行实现 官网下载地址&#xff1a; https://cn.ubuntu.com/download https://releases.ubuntu.com 操作系统手册&#xff1a; https://ubuntu.com/server/docs/ &#xff08;里面包含安装文档&#xff09; 安装指南&#xff08;详细&#xff09;&#xff1a…

一手信息:用ai怎么做短视频赚钱。

AI制作短视频赚钱的具体数据与分析如下&#xff1a; 数据展示 ​ 更多实操教程和AI绘画工具,可以扫描下方,免费获取 \1. 收入情况&#xff1a; - 有案例显示&#xff0c;通过AI生成历史解说视频&#xff0c;半年内可以赚取64万人民币。 - 另一个案例则是通过AI生成电影解说…

鸿蒙 Next 实战: 环境搭建

前言 作为独立开发者&#xff0c;如果我们错过了传统移动 App&#xff0c;和后起小程序的红利&#xff0c;那万物互联 AI 的应用开发就得抓住了。 虽然个人上架应用平台难易都差不多&#xff0c;但是鸿蒙生态当前正需要广大开发者参与&#xff0c;一旦上架&#xff0c;相比其…

AI绘画ComfyUI 完全入门:基本功能完全掌握!

前言 大家好&#xff0c;我是每天分享AI应用的萤火君&#xff01; 在AI绘画领域&#xff0c;Stable Diffusion 因其开源特性而受到广泛的关注和支持&#xff0c;背后聚拢了一大批的应用开发者和艺术创作者&#xff0c;是AI绘画领域当之无愧的王者。 目前使用 Stable Diffusi…

外国钞票面值检测系统源码分享

外国钞票面值检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

新版AndroidStudio log使用

从Android Studio Dophin开始&#xff0c;Android Studio中的默认展示了新版的logcat。新版的logcat色彩上是更加的好看了&#xff0c;不同的tag会有不同的颜色&#xff0c;不同level等级的log默认也有不同的颜色。log过滤修改的更简洁了&#xff0c;当然使用起来也更加复杂了。…

系统开发基础错题解析一【软考】

目录 前言1.开发模型1.1快速原型模型优点1.2敏捷统一模型1.3增量模型的优缺点1.4极限编程1.5螺旋模型 2.软件开发方法3.数据流图与数据字典3.1判定表3.2数据流图绘制3.3决策树 4.概要设计和详细设计5.内聚性6.耦合性 前言 本文专门用来记录本人在做软考中有关系统开发基础的错…

基于SpringBoot+Vue的宠物店管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

0基础跟德姆(dom)一起学AI 机器学习03-线性回归

线性回归 线性回归介绍 【理解】举个栗子 假若有了身高和体重数据&#xff0c;来了播仔的身高&#xff0c;你能预测播仔体重吗? 这是一个回归问题&#xff0c;该如何求解呢? **思路**:先从已知身高X和体重Y中找规律&#xff0c;再预测 •数学问题&#xff1a;用一条线来拟…

【LeetCode】每日一题 2024_10_7 最低加油次数(堆、贪心)

前言 每天和你一起刷 LeetCode 每日一题~ 大家国庆节快乐呀~ LeetCode 启动&#xff01; 国庆最后一天&#xff0c;力扣还在加油站&#xff0c;怕不是国庆回家路上堵车了 题目&#xff1a;最低加油次数 代码与解题思路 func minRefuelStops(target int, startFuel int, st…

失业的程序员除了找工作,还有哪些赚钱的路子?零基础入门到精通,收藏这篇就够了_网络开发怎么赚钱

看到一个平台上的博主&#xff0c;目前在做独立开发者&#xff0c;开发了20多个网站&#xff0c;网站的类型主要是工具型和信息整理型&#xff0c;谷歌广告的收益一个月1万多。 目前他除了依靠谷歌广告的收入外&#xff0c;也在做自媒体&#xff0c;拓展这一块的收入&#xff…

41亿收购百年零部件巨头,「果链一哥」欲再造千亿规模新版图?

、 为了进一步拓展汽车业务版图&#xff0c;果链一哥立讯精密再次开启“买买买”模式。 日前&#xff0c;立讯精密发布公告称&#xff0c;计划以5.25亿欧元&#xff08;约41.3亿元人民币&#xff09;的价格收购Leoni AG&#xff08;以下简称“莱尼公司”&#xff09;50.1%股权…

打卡第五天 P3916 图的遍历

今天是我打卡第五天&#xff0c;做个普及/提高−题吧(#^.^#) 原题链接&#xff1a;图的遍历 - 洛谷 题目描述 给出 N 个点&#xff0c;M 条边的有向图&#xff0c;对于每个点 v&#xff0c;求 A(v)A(v) 表示从点 v 出发&#xff0c;能到达的编号最大的点。 输入格式 第 1 …

Golang反射解说

在Go语言中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时检查、修改和操作变量的类型信息。 反射主要用于处理那些在编译时无法确定类型的情况&#xff0c;比如处理接口类型的值、实现通用的函数等。 Go语言中反射的基本…

OpenAI 旧金山开发者大会发布五大创新功能 实时语音、视觉微调、模型蒸馏

在10月1日的 OpenAI 旧金山开发者大会&#xff08; DevDay&#xff09; 上 。OpenAI 公布了五项重大创新&#xff0c;其中“实时 API”&#xff08;Realtime API&#xff09;的新功能&#xff0c;使得开发者能够创建具有低延迟、AI 生成的语音响应功能的应用程序。尽管这一功能…

C++ | Leetcode C++题解之第461题汉明距离

题目&#xff1a; 题解&#xff1a; class Solution { public:int hammingDistance(int x, int y) {int s x ^ y, ret 0;while (s) {s & s - 1;ret;}return ret;} };

MySQL 篇-深入了解视图、SQL 优化(主键优化、order by 优化、group by 优化、update 优化等)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 SQL 优化 1.1 SQL 优化 - 插入数据 1.2 SQL 优化 - 主键优化 1.2.1 页分裂 1.2.2 页合并 1.2.3 主键设计原则 1.3 SQL 优化 - order by 优化 1.3.1 单字段排序 1.…

JS设计模式之职责链模式:优雅地处理请求流程

一. 前言 在前端开发中&#xff0c;我们经常会遇到需要按照一定的顺序处理一系列请求或操作的情况&#xff0c;如果将每一步处理都硬编码在一起&#xff0c;会导致代码臃肿&#xff0c;可维护性和可扩展性都会大大降低。而职责链模式恰好提供了一种优雅的解决方案。 无论你是…

Python进阶--正则表达式

目录 1. 基础匹配 2. 元字符匹配 1. 基础匹配 正则表达式&#xff0c;又称规则表达式&#xff08;Regular Expression&#xff09;&#xff0c;是使用单个字符串来描述、匹配某个句法规则的字符串&#xff0c;常被用来检索、替换那些符合某个模式&#xff08;规则&#xff…