C语言初识(一)

news2024/11/15 17:30:31

目录

前言

一、什么是C语言?

二、第一个C语言程序

(1)创建新项目

(2)编写代码

(3)main函数

三、数据类型

四、变量、常量

(1)变量的命名

(2)变量的分类

(3)变量的使用

(4)_CRT _SECURE_NO_WARNINGS问题


前言

C语言是万物之母,C生万物,但大家要不只只学会C语言,还要学习学好计算机语言,算法,数据结构,操作系统,计算机网络,项目实战,数据库MySQL等等。

但是根据我的总结,C语言基础打好后,其它的都很好理解,很好学习和读懂,有助于后来专业领域的学习。

一般我写C语言是用的VSstdio2022(个人感觉非常好使),大家可以用其它编辑器,选择自己喜欢的来编写代码真的很高效。

学习闲暇时间用一些网站来刷题,例如牛客网,洛谷,pta,leetcode等等。

 本篇文章来介绍C语言的各个知识,不做深入了解,后续文章深入了解每个知识点,如果学过的也可以大致看看,看看自己C语言有没有漏洞,经常反思才会有所进步。

——————————————————————————————————————————— 

一、什么是C语言?

C语言是一门通用的计算机编程语言(人和计算机进行交流的语言,例如:C C++,JAVA,Python,go等等),现在已经有上千种语言,C语言只不过是其中的一种语言,广泛(善于)用于底层开发(例如操作系统可以使电脑(硬件)工作,而在他们之间还有一个驱动,实际就是操作系统调用驱动来使电脑工作,操作系统上可以装很多软件,操作系统以上一般叫做上层软件开发,以下也就是下层或者底层开发,也就是操作系统及以下,linux就是用C语言写的,早起的QQ也是用C语言写的,驱动也是用C语言写的)。C语言的设计目标就是提供一种能以简易的方式编译、处理低级存储器、产生少量机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好的跨平台的特性,以一个标准写出的C语言可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发商用的C语言语法产生差异,有美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

早期计算机能够识别的是二进制,也就是1和0,如果用二进制来写的话,自己肯能会眼花缭乱,以前都要查手册来写二进制功能,后来也就出来了助记符(汇编语言),例如100001对应ADD等,后来人们对于汇编语言也有些吃力和不满意,于是演化出了B语言,又演化出了C语言,就出现了越来越多的计算机语言。这些语言都叫做高级语言,而二进制和汇编语言叫做低级语言。

不同厂商推出了不同的C语言版本,所以国际标准出现了,C89,C90,C99,C11......最常用的还是C89 C90,虽然没有固定标准,但一般将C99之后的C语言标准称为“现代C语言”;目前的最新标准为C23,只有国际标准的语言才值得去学习;

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同,其编辑器主要有Clang(苹果公司开发),GCC(Linux),WIN-TC(用的较少),SUBLIME(可以配置编辑器编译C,但不推荐),MSVC(VS用的编辑器,VS底层就是),Tuebo C等。

二、第一个C语言程序

(1)创建新项目

1.首先创建一个项目

例如我用的是VS2022(也可以用VS2019):

打开后左边这些是之前写过的文件,第一次打开左边是什么都没有的,我们选择创建新项目。

之后选到C++,选择空项目,进入配置页面。

这里可以命名项目的名称,这里写一个有意义有价值的名字,尽量不要写中文,因为他对中文的兼容性不是很好,这样将来才会知道自己写的是什么,以及项目的存储地址,完成后点击创建,一个新的空项目就创立了出来。 

创建出来的页面是这样的:

如果没有左边的框,点击视图,选择里面的解决方案资源管理器,就出现了。 

之后创建源文件,在写C语言代码的时候把代码放在文件中,.h后缀叫做头文件,.c后缀叫源文件,右击源文件,选择添加文件,选择.cpp文件,然后起一个比较有价值的名字,如果是C程序,后缀写.c,如果是c++,后缀写.cpp.

(2)编写代码

#include<stdio.h>//库文件

int main() //主函数
{
    printf("hello world\n");
    return 0;
}

写完后按Ctrl+F5就可以编译代码,按F10就可以分步骤运行(而且从主函数的第一行开始执行),产生结果,主函数是程序的入口,一个C语言代码中必须要有主函数,新手还是要自己打一遍,加深印象。 

(3)main函数

但一个工程(项目)中可以有多个.c文件,多个.c文件中只能有一个main函数,让一个主函数统领一个工程就行

include 是包含的意思

int 整形 整数

printf 打印函数 ,专门用来在屏幕上打印数据的 ,是C语言标准库中提供的一个库函数。

在使用这个库函数的时候要包含stdio.h头文件,std-standard叫标准 i-input  o-output ,其实叫做标准输入输出头文件。如果想使用这样的函数,就要包含头文件,没有可以不写。

#include <stdio.h>
void main()
{
    printf("xxx");
}

上边的是老式的写法

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

 这里面的void,就相当于没放一样,这里main函数不需要参数

int main(int argc,char argv[])
{
    return 0;
}

 这里指main函数有两个参数,这两个参数是有特殊意义的,如果此时此时可不需要这些参数,可以不写,但写了不用这些参数也可以。

三、数据类型

char字符数据类型
short短整型
int整形
long长整型
long long更长整形
float单精度浮点数
double双精度浮点数

前五个都是属于Int整形范畴,后两个是浮点数(小数),因为小数可以用科学计数法来表示,所以在C语言里叫做浮点数。

#include <stdio.h>
int main()
{
     printf("%d\n",sizeof(char));          //1
     printf("%d\n",sizeof(short));         //2
     printf("%d\n",sizeof(int));           //4
     printf("%d\n",sizeof(long));          //4
     printf("%d\n",sizeof(long long));     //8
     printf("%d\n",sizeof(float));         //4
     printf("%d\n",sizeof(double));        //8
     return 0;
}

这里计算出各个类型占了多少空间,运行出来分别对应注释部分,单位为字节,计算机常见单位:bit-比特位,byte-字节,kb,mb,gb,tb,pb。

1 byte = 8bit

1KB = 1024 byte

1MB = 1024 KB

1GB = 1024MB

1TB = 1024MB

1PB = 1024TB

每一个类型都有对应着一个范围,可以利用类型的大小来节省存储空间。

由类型创建变量
char ch='w';
printf("%c\n",ch);

float weight = 75.5f;//编译器自动识别他是个浮点数类型
double pai=3.14;

四、变量、常量

生活中有些值是不变的(比如:圆周率,年龄,身份证,血型等等),可变的(身高,体重等等),不变的就用常量,变得就是变量。

//创建变量
int age = 18;
double salary =2000.0;//不加f,默认认为是doubke类型,加了默认认为浮点数
int m;        //不是好的习惯,好的习惯是创建变量后给定一个初始值

(1)变量的命名

变量的命名也要有规定,只能是字母(包括大写小写)下划线数字组成 ,不能以数字开头,长度不能超过63个字符,变量名中区分大小写的,变量名中不能使用关键字,在命名时尽量使用一些有意义的名字,例如英文单词,这样更加规范,而且不易混乱,自己写的什么自己知道,别人也知道,大大增加了可读性。

(2)变量的分类

*局部变量

*全局变量

一般来说,大括号外面是全局变量,括号内部是局部变量。不管全局变量放到那里,放到前面还是后边都不耽误他是全局变量。

int a = 10;//全局变量
int main () 
{
    int b =20;//局部变量
    return 0;
}

当全局变量和 局部变量名字冲突时候,局部变量优先,建议大家尽量不要冲突,不是一个好的习惯。

(3)变量的使用

什么时候使用,什么时候创建变量,如果写一个代码计算两个数的和

scanf是一个库函数,可以从键盘接收数据

&  取地址符号

#include <stdio.h>
int main()
{
    int num1=0;
    int num2=0;
    int sum=0;
    scanf("%d%d",&num1,&num2);
    sum=num1+num2;
    printf("sum= %d \n",sum);
    return 0;
}

输入一个数,空格,再输入一个数,就分别为sum1和sum2赋值,之后相加。 

(4)_CRT _SECURE_NO_WARNINGS问题

其中可能会有错误,出现一大堆英文,这是因为scanf导致的其中大致的意思就是不安全,_CRT _SECURE_NO_WARNINGS,我们可以用直接将scanf替代成scanf_s来解决,因为scanf_s只是在VS中使用有用,在其它的编辑器里还是scanf,所以不建议使用scanf_s,怕养成习惯改不过来,另一种解决办法就是推荐的一种。

scanf,strcpy,strcat这些函数VS都会提示不安全

在文件前面定义上这一句话,就可以避免出错。

#define _CRT_SECURE_NO_WARNINGS 1

 为了以后不用写这句话,可以在newc+file.cpp这个文件中加上上面这个代码,以后新建的文件就会自动加上上述代码。就不会出现安全问题了。

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

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

相关文章

mysql复合查询 -- 合并查询(union,union all)

目录 合并查询 介绍 表数据 union 使用场景 ​编辑 示例 union all 合并查询 介绍 它不像笛卡尔积那种,将行信息做乘法 合并只是单纯地合在一起求的是两个结果集的并集,并且会自动去掉并集中的重复行 注意,因为是求并集,会将两个结果进行拼接 所以要保证列信息相同 表…

13.第二阶段x86游戏实战2-动态模块地址

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

基于Python+SQLServer实现(界面)书店销售管理管理子系统

书店销售管理管理子系统 一、设 计 总 说 明 现在社会随着计算机技术迅速发展与技术的逐渐成熟&#xff0c;信息技术已经使人们的生活发生深刻的变化。生活中的各种服务系统也使人们在生活中的联系日常销售活动方式发生了很大的变化&#xff0c;让效率较低的手工操作成为过去…

大数据新视界 --大数据大厂之 Reactjs 在大数据应用开发中的优势与实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【Perf调测】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 Perf为性能分析工具&#xff0c;依赖PMU&#xff08;Per…

UE学习篇ContentExample解读-----------Blueprint_Mouse_Interaction

文章目录 总览描述&#xff08;Blueprint_Mouse_Interaction&#xff09;阅览解析1、PlayerControler分析2、拖拽球蓝图分析&#xff1a;3、移动的立方体分析&#xff1a; 新概念总结致谢&#xff1a; 总览描述&#xff08;Blueprint_Mouse_Interaction&#xff09; 打开关卡后…

MySQL tinyint(1)类型数据在经过flink cdc同步到doris后只有0/1问题定位与解决

背景&#xff1a; 近期在负责公司数据仓库搭建事宜&#xff0c;踩了一些坑后&#xff0c;终于通了&#xff0c;目标报表也成功迁移到了新方案上&#xff0c;可在数据验收的时候发现&#xff0c;同一个订单查询出了多条记录&#xff0c;原本以为只是简单的left join出多条记录问…

植物检测系统源码分享

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

Kubernetes调度单位Pod

Kubernetes调度单位Pod 1 Pod简介 不直接操作容器container。 一个 pod 可包含一或多个容器&#xff08;container&#xff09;&#xff0c;它们共享一个 namespace&#xff08;用户&#xff0c;网络&#xff0c;存储等&#xff09;&#xff0c;其中进程之间通过 localhost 本地…

Linux环境下安装部署MySQL8.0以上(内置保姆级教程) C语言

一、环境搭建、 1 、安装MySQL服务端与客户端 sudo apt-get install mysql-server //mysql服务端安装 。 &#xff08;现在只安装这一个就够了&#xff0c;包含了客户端的&#xff09; sudo apt-get install mysql-client //mysql客户端安装。 mysql服务器端程序&…

jmeter本身常用性能优化方法

第一种设置&#xff1a; 修改Jmeter.bat文件&#xff0c;调整JVM参数(修改jmeter本身的最小最大堆内存)&#xff0c;默认都是1个G set HEAP-Xms5g -Xmx5g -XX:MaxMetaspaceSize256m我的本机内存是8G&#xff0c;那最大可以设置870%(本机内存的70%)5.6g 这里我设置的5g 如果…

CSS的盒子模型(Box Model)

所有HTML元素都可以看作盒子&#xff0c;在CSS中盒子模型是用来设计和布局的&#xff0c;CSS盒子模型本质上是一个盒子&#xff0c;分装周围的HTML元素包括&#xff1a;外边距&#xff0c;边框&#xff0c;内边距和实际内容。 Margin&#xff08;外边距&#xff09; 清除边框…

CSS的弹性盒子模型(Flex box)

弹性盒子模型是CSS3的一种新的布局模式&#xff0c;弹性盒是一种当页面需要适应不同的屏幕大小以及设备类型时确保拥有合适的布局方式&#xff0c;引入弹性盒子模型的目的时提供更加有效的方式来对一个容器中的子元素进行排列&#xff0c;对齐和分配空白空间。 弹性盒子由弹性容…

Linux复习--网络基础(OSI七层、TCP三次握手与四次挥手、子网掩码计算)

一、ISO/OSI七层模型的分层与作用 1、ISO/OSI的七层模型 2、作用 应用层&#xff1a;为用户提供服务&#xff0c;给用户一个操作界面表示层&#xff1a;数据提供表示&#xff1b;加密&#xff1b;压缩&#xff1b;会话层&#xff1a;确定数据是否需要进行网络传递传输层&…

好用的idea方法分隔符插件

好用的idea方法分隔符插件

OpenCV特征检测(12)检测图像中的潜在角点函数preCornerDetect()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算用于角点检测的特征图。 该函数计算源图像的基于复杂空间导数的函数 dst ( D x src ) 2 ⋅ D y y src ( D y src ) 2 ⋅ D x x src − 2 …

OpenCV 3

模板匹配方法 尽量采用归一化的方法&#xff0c;因为它更加精细。 匹配效果展示 匹配单一图像 这是一段Python代码&#xff0c;主要使用了OpenCV库进行图像处理。这段代码的主要功能是通过模板匹配方法在一张大图中找到一个小图的位置。 具体来说&#xff1a; - 第一行的for…

项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142454993 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

验收测试:从需求到交付的全程把控!

在软件开发过程中&#xff0c;验收测试是一个至关重要的环节。它不仅是对软件质量的把关&#xff0c;也是对整个项目周期的全程把控。从需求分析到最终的软件交付&#xff0c;验收测试都需要严格进行&#xff0c;以确保软件能够符合预期的质量和性能要求。 一、需求分析阶段 在…

[uni-app]小兔鲜-01项目起步

项目介绍 效果演示 技术架构 创建项目 HBuilderX创建 下载HBuilderX编辑器 HBuilderX/创建项目: 选择模板/选择Vue版本/创建 安装插件: 工具/插件安装/uni-app(Vue3)编译器 vue代码不能直接运行在小程序环境, 编译插件帮助我们进行代码转换 绑定微信开发者工具: 指定微信开…