当前位置: 首页 > news >正文

小白都能看懂的C语言入门教程

文章目录

  • C语言入门教程
  • 1. 第一个C语言程序HelloWorld
  • 2. C语言的数据类型
  • 3. 常量变量的使用
  • 4. 自定义标识符#define
  • 5. 枚举的使用
  • 6. 字符串和转义字符
  • 7. 判断和循环
  • 8. 函数
  • 9. 数组的使用
  • 10. 操作符的使用
  • 11. 结构体
  • 12. 指针的简单使用

C语言入门教程

1. 第一个C语言程序HelloWorld

#include<stdio.h>
int main() {printf("HelloWorld");
}

2. C语言的数据类型

(1)数据类型分类

1.char 字符数据类型 ,长度1

2.short 短类型数据类型,长度4

3.int 整型数据类型,长度2

4.long 长整型,长度4

5.long long 更长的整型,长度8

6.float 单精度浮点数,长度4

7.double 双精度浮点数,长度8

在这里插入图片描述

(2)长度计算使用sizeof(数据类型参数);

(3)输出所使用的符号

short		%hd
int			%d
long		%ld
long long	%lld
float		%f
double		%lf
char		%c

3. 常量变量的使用

(1)变量的定义

变量类型 变量名(=初始化数据);

(2)常量的定义

常量顾名思义,就是不可改变的变量,使用修饰词const:

示例:

#include<stdio.h>
int main() {const int a = 10;a = 20;printf("%d\n",a);
}

报错图:

在这里插入图片描述

4. 自定义标识符#define

(1)如何定义标识符

一般在#include<stadio.h>下面在main上面进行定义

#define 常量名 值

#include<stdio.h>
#define MAX 50
int main() {printf("%d",MAX);return 0;
}

在这里插入图片描述

5. 枚举的使用

(1)枚举的定义

enum 变量名{

​ 定义的属性值1 = 0,定义的属性值2,定义的属性值3,…定义定义的属性值n

}

定义在main方法内部

注意:属性值后面不跟值默认是0,也可以自定义值,例如定义的属性值1 = 100,则从100开始,后面依次加一。

例1:使用默认值

#include<stdio.h>
int main() {enum DAY{day0,day1,day2,day3};printf("%d %d %d %d",day0,day1,day2,day3);
}

在这里插入图片描述

例2:自定义值

#include<stdio.h>
int main() {enum DAY{day0 = 10,day1,day2,day3};printf("%d %d %d %d",day0,day1,day2,day3);
}

在这里插入图片描述

例3:前面使用默认值后面自定义值

#include<stdio.h>
int main() {enum DAY{day0,day1,day2=12,day3};printf("%d %d %d %d",day0,day1,day2,day3);
}

在这里插入图片描述

6. 字符串和转义字符

(1)字符串如何定义

c语言字符串的定义和java中的字符串定义还是有区别的,在C语言的数据类型中,我们并没有看到有String类型的数据,而仅仅只有char类型数据,说明c语言的字符串不能直接定义,需要借助数组定义。通常有三种定义方法

第一种:char 字符串名字[长度] = {字符串所含元素};

这一种给出的字符串的元素可以不等于字符串的长度,可以小于,但是不能大于字符串的长度。给的元素小于数组的长度,打印出的是实际元素个数,但是长度还是定义的长度

#include<stdio.h>
int main() {char arr[3] = {'a','b'};printf("%s\n",arr);
}

在这里插入图片描述

第二种:char 字符串名字[] = {字符串所含元素};

一般这种需要在末尾加上’\0’,表示结束。

#include<stdio.h>
int main() {char arr[] = {'a','b','\0'};printf("%s\n",arr);
}

在这里插入图片描述

第三种:char 字符串名字[] = “字符串包含元素”;

#include<stdio.h>
int main() {char arr[] = "abc";printf("%s\n",arr);
}

在这里插入图片描述

注意:这三种乍得一看似乎没有区别,其实还是有区别的,主要区别在于’\0’结束符的使用

(2)转义字符

\'	单引号
\"	双引号
\\	反斜杠
\n	换行
\r	回车
\t	水平制表符

7. 判断和循环

(1)判断

语法:

if(判断条件){执行内容
}else if(判断条件1){执行内容2
}else{执行内容3
}

(2)选择

#include<stdio.h>
int main() {int n;scanf("%d",&n);switch(n){case 0:{printf("%d\n",n);break;}case 1:{printf("%d\n",n);break;}case 2:{printf("%d\n",n);break;}}
}

在这里插入图片描述

(3)循环

①for循环

#include<stdio.h>
int main() {for(int i =0;i < 10;i++){printf("%d\n",i);} 
}

②while循环

#include<stdio.h>
int main() {int n =0;while(n < 10){printf("%d\n",n);n++;}
}

③do … while循环

#include<stdio.h>
int main() {int n =0;do{printf("%d\n",n);n++;	}while(n < 10);
}

8. 函数

函数一般用于流程化的东西,也称为批量处理。例如计算a与b的和,这里的a和b是泛指,不是只具体的,这时候使用函数来计算很明显能提高效率。

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {int a = 10;int b = 20;printf("%d\n",sum(a,b));
}
int sum(int a,int b){return a+b;
}

9. 数组的使用

(1)数组的定义

①int arr[5] = {数组的五个元素,或者小于5个元素,默认为0} ;

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {int arr[5] = {1,2,4,5,6} ;for(int i =0;i < 5;i++){printf("%d",arr[i]);}
}

②int arr[] = {数组的元素} ;

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {int arr[] = {1,2,4,5,6} ;for(int i =0;i < 5;i++){printf("%d",arr[i]);}
}

10. 操作符的使用

算术操作符

+ - * 、 %

移位操作符

>> <<

位操作符

& ^ |

赋值操作符

= += -= *= /= &= |= >>= <<=

单目操作符

!	逻辑反操作
-
+
&	取地址
*	引用操作符
~	取反操作
--
++

关系操作符

>
>=
<
<=
!=
==

逻辑操作符

&&
||

三亩条件操作符

a > b? a : b

11. 结构体

结构题使用struct关键词修饰,结构体表示的是例如表示一个学生的信息,学生信息属性不止一个并且都是一个人的属性我们如何表示,使用结构体就能完美的表示,例如还有银行卡的信息,id号,拥有者姓名,卡的类型也需要表示

#include<stdio.h>
struct Student{int id;char name[20];int age;char sex[4];
}; 
int main() {struct Student stu = {1,"张三",10,"男"};printf("id=%d name=%s age=%d sex=%s",stu.id,stu.name,stu.age,stu.sex);
}

12. 指针的简单使用

指针也就是一个地址的映射。把一个变量的地址址赋值给一个指针。

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {int m = 10;int* p = &m; //&取地址址的意思,把m的地址复制给指针p *p = 20;	//引用p复制给20 printf("%d",*p);
}

相关文章:

小白都能看懂的C语言入门教程

文章目录C语言入门教程1. 第一个C语言程序HelloWorld2. C语言的数据类型3. 常量变量的使用4. 自定义标识符#define5. 枚举的使用6. 字符串和转义字符7. 判断和循环8. 函数9. 数组的使用10. 操作符的使用11. 结构体12. 指针的简单使用C语言入门教程 1. 第一个C语言程序HelloWor…...

leetcode 21~30 学习经历

leetcode 21~30 学习经历21. 合并两个有序链表22. 括号生成23. 合并K个升序链表24. 两两交换链表中的节点25. K 个一组翻转链表26. 删除有序数组中的重复项27. 移除元素28. 找出字符串中第一个匹配项的下标29. 两数相除30. 串联所有单词的子串小结21. 合并两个有序链表 将两个升…...

让ArcMap变得更加强大,用python执行地理处理以及编写自定义脚本工具箱

文章目录一、用python执行地理处理工具1.1 例&#xff1a;乘以0.00011.2 例&#xff1a;裁剪栅格1.3 哪里查看调用某工具的代码&#xff1f;二、用python批量执行地理处理工具2.1 必需的python语法知识for循环语句缩进的使用注释的使用2.2 一个批处理栅格的代码模板三、创建自定…...

SAP 项目实施阶段全过程

在sap实施项目的周期和步骤上&#xff0c;根据各公司对业务的理解不同&#xff0c;也被划分为各个阶段&#xff0c;但其中由普华永道提出的分七步走&#xff0c;个人觉得对刚进入这一行业的人很有帮助&#xff0c;接下来一起分享和讨论下&#xff1a; sap实施项目生命周期&…...

idea中的Maven导包失败问题解决总结

idea中的Maven导包失败问题解决总结 先确定idea和Maven 的配置文件settings 没有问题 找到我们本地的maven仓库&#xff0c;默认的maven仓库路径是在\C:\Users\用户名.m2下 有两个文件夹&#xff0c;repositotry是放具体jar包的&#xff0c;根据报错包的名&#xff0c;找对应文…...

REDIS中的缓存穿透,缓存击穿,缓存雪崩原因以及解决方案

需求引入一般在项目的开发中,都是使用关系型数据库来进行数据的存储&#xff0c;通常不会存在什么高并发的情况&#xff0c;可是一旦涉及大数据量的需求&#xff0c;比如商品抢购&#xff0c;网页活动导致的主页访问量瞬间增大&#xff0c;单一使用关系型数据库来保存数据的系统…...

数据库及缓存之MySQL(一)

思维导图 常见知识点 1.mysql存储引擎&#xff1a; 2.innodb与myisam区别&#xff1a; 3.表设计字段选择&#xff1a; 4.mysql的varchar(M)最多存储数据&#xff1a; 5.事务基本特性&#xff1a; 6.事务并发引发问题&#xff1a; 7.mysql索引&#xff1a; 8.三星索引&#xf…...

项目管理中,项目经理需要具备哪些能力?

项目经理是团队的领导者&#xff0c;是带领项目团队对项目进行策划、执行&#xff0c;完成项目目标&#xff0c;对于项目经理来说&#xff0c;想要有序推进项目&#xff0c;使项目更成功&#xff0c;光有理论知识是不够的&#xff0c;也要具备这些能力&#xff1a; 1、分清主…...

itk中的一些图像处理

文章目录1.BinomialBlurImageFilter计算每个维度上的最近邻居平均值2.高斯平滑3.图像的高阶导数 RecursiveGaussianImageFilter4.均值滤波5.中值滤波6.离散高斯平滑7.曲率驱动流去噪图像 CurvatureFlowImageFilter8.由参数alpha和beta控制的幂律自适应直方图均衡化9.Canny 边缘…...

Endless lseek导致的SQL异常

最近碰到同事咨询的一个问题&#xff0c;在执行一个函数时&#xff0c;发现会一直卡在那里。 strace抓了下发现会话一直在执行lseek&#xff0c;大致情况如下&#xff1a; 16:13:55.451832 lseek(33, 0, SEEK_END) 1368064 <0.000037> 16:13:55.477216 lseek(33, 0, SE…...

JUC-day01

JUC-day01 什么是JUC线程的状态: wait sleep关键字:同步锁 原理(重点)Lock接口: ReentrantLock(可重入锁)—>AQS CAS线程之间的通讯 1 什么是JUC 1.1 JUC简介 在Java中&#xff0c;线程部分是一个重点&#xff0c;本篇文章说的JUC也是关于线程的。JUC就是java.util .con…...

Mind+Python+Mediapipe项目——AI健身之跳绳

原文&#xff1a;MindPythonMediapipe项目——AI健身之跳绳 - DF创客社区 - 分享创造的喜悦 【项目背景】跳绳是一个很好的健身项目&#xff0c;为了获知所跳个数&#xff0c;有的跳绳上会有计数器。但这也只能跳完这后看到&#xff0c;能不能在跳的过程中就能看到&#xff0c;…...

数据库概述

20世纪60年代后期&#xff0c;就出现了数据库技术。取得成就如下&#xff1a;造就了四位图灵奖得主发展成为以数据建模和DBMS核心技术为主&#xff0c;内容丰富的一门学科。带动了一个巨大的软件产业-DBMS产品及其相关工具和解决方案。四个基本概念数据数据是数据库中存储的基本…...

【已解决】解决IDEA的maven刷新依赖时出现Connot reconnect错误

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01;也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&#…...

动态链接库(.so)文件的变编译和引用、执行

动态链接库(.so)文件的变编译和引用 动态链接库&#xff1a;SO&#xff08;Shared Object&#xff09;是一种动态链接库&#xff0c;也被称为共享库。它是一种可被多个程序共享使用的二进制代码库&#xff0c;其中包含已编译的函数和代码。与静态链接库不同&#xff0c;动态链接…...

linux(centos8)文件解压命令

linux解压命令tar 解压命令常用解压命令1 [.tar] 文件 解压到当前文件夹2 [.tar.gz] 文件 解压到当前文件夹3 [.tar] 解压到指定文件夹 -C 必须是大写unzip 解压命令常用解压命令1 [.zip]解压到当前文件夹2 [.zip] 解压到指定文件夹2 [.zip] 解压到指定文件夹&#xff08;强行覆…...

阅读笔记6——通道混洗

一、逐点卷积 当前先进的轻量化网络大都使用深度可分离卷积或组卷积&#xff0c;以降低网络的计算量&#xff0c;但这两种操作都无法改变特征图的通道数&#xff0c;因此需要使用11的卷积。总体来说&#xff0c;逐点的11卷积有如下两点特性&#xff1a; 可以促进通道之间的信息…...

上海亚商投顾:沪指失守3300点 卫星导航概念全天强势

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪指数早间低开后震荡回升&#xff0c;沪指盘中一度翻红&#xff0c;随后又再度走低&#xff0c;创业板指午后跌近1%。…...

疯狂的SOVA:Android银行木马“新标杆”

2021年8月初&#xff0c;一款针对Android银行APP的恶意软件出现在人们的视野中&#xff0c;ThreatFabric 安全研究人员首次发现了这一木马&#xff0c;在其C2服务器的登录面板&#xff0c;研究人员发现&#xff0c;攻击者将其称之为SOVA。 ** SO** ** V** ** A简介** 在俄语中…...

汽车零部件企业数字工厂管理系统建设方案

在汽车零部件制造领域&#xff0c;伴随工业信息化与机器人化&#xff0c;制造模式逐渐从 CAD/CAE/CAM 数字化设计及加工走向全产品周期虚拟现实的数字化工厂管理系统平台&#xff0c;实现虚拟现实设计制造&#xff0c;防范产品缺陷并预防设备故障&#xff0c;大幅提高生产效率。…...

Taotoken控制台用量看板提供的洞察与规划价值

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken控制台用量看板提供的洞察与规划价值 对于依赖大模型API进行开发的项目团队而言&#xff0c;成本与用量的不透明常常是管理…...

Gemini深度研究模式全解析(2024最新版API+多模态检索内参):谷歌内部技术白皮书级拆解

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Gemini深度研究模式的核心定位与演进脉络 Gemini深度研究模式并非单纯的功能叠加&#xff0c;而是Google面向复杂知识工作场景构建的推理范式跃迁。它将多跳检索、跨模态证据聚合与可验证推理链生成深度融合&…...

从0到1构建DeepSeek企业级隔离体系:4类租户场景×3种SLA等级×2套审计回溯机制

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek资源隔离方案的总体架构设计 DeepSeek资源隔离方案以“多租户安全边界 动态资源契约”为核心设计理念&#xff0c;构建覆盖计算、内存、存储与网络四维资源的统一隔离层。该架构采用分层解耦结…...

在自动化工作流中集成 Taotoken 实现按需调用与成本优化

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在自动化工作流中集成 Taotoken 实现按需调用与成本优化 自动化工作流&#xff0c;例如 CI/CD 流水线、监控脚本或定期报告生成任务…...

2026年Java面试全指南(八股文+场景题)从原理到实战

前言我相信大多 Java 开发的程序员或多或少经历过 BAT 一些大厂的面试&#xff0c;也清楚一线互联网大厂 Java 面试是有一定难度的&#xff0c;小编经历过多次面试&#xff0c;有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析&…...

BilibiliDown深度评测:5大实用技巧让你轻松收藏B站优质内容

BilibiliDown深度评测&#xff1a;5大实用技巧让你轻松收藏B站优质内容 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirr…...

利用大语言模型生成可解释特征:从黑盒预测到白盒决策的工程实践

1. 项目概述&#xff1a;当机器学习遇见“说人话”的特征在机器学习项目里摸爬滚打这么多年&#xff0c;我最大的感触之一就是&#xff1a;模型性能的瓶颈&#xff0c;往往不在算法本身&#xff0c;而在于我们喂给它的“食物”——特征。尤其是在处理文本数据时&#xff0c;这个…...

NVIDIA Profile Inspector深度教程:解锁显卡隐藏设置的终极指南

NVIDIA Profile Inspector深度教程&#xff1a;解锁显卡隐藏设置的终极指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款功能强大的显卡性能调优工具&#xff0c;专为…...

GetQzonehistory:如何用Python一键永久保存你的QQ空间所有说说

GetQzonehistory&#xff1a;如何用Python一键永久保存你的QQ空间所有说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代&#xff0c;QQ空间承载了无数人的青春记忆和珍贵瞬…...

Cursor Pro破解终极指南:5步实现永久免费使用的完整解决方案

Cursor Pro破解终极指南&#xff1a;5步实现永久免费使用的完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached yo…...